我試圖運行PROC TABULATE
以獲取用於分類變量(稱爲brand
)的各種變量的方法。我想輸出結果出來,所以它的每個組合的一行& brand
。這樣我就可以將輸出複製到Excel中並創建一個數據透視表來與用戶分享。該表格將是1列X,但會產生許多行brand*metric
。SAS:爲每個度量*類組合使用一行表格
問題是SAS將生成嵌套的單元格與合併表,所以我不能輕鬆地複製和粘貼輸出 - 我不得不手動清理一堆單元格。
我對SAS並不是非常瞭解,所以任何幫助表示讚賞。謝謝!
我試圖運行PROC TABULATE
以獲取用於分類變量(稱爲brand
)的各種變量的方法。我想輸出結果出來,所以它的每個組合的一行& brand
。這樣我就可以將輸出複製到Excel中並創建一個數據透視表來與用戶分享。該表格將是1列X,但會產生許多行brand*metric
。SAS:爲每個度量*類組合使用一行表格
問題是SAS將生成嵌套的單元格與合併表,所以我不能輕鬆地複製和粘貼輸出 - 我不得不手動清理一堆單元格。
我對SAS並不是非常瞭解,所以任何幫助表示讚賞。謝謝!
我想你可以只使用PROC UNIVARIATE
,如果我知道你想要什麼。讓我們使用SASHELP.CARS作爲我們的示例數據。我們可以將MODEL作爲您的品牌,並獲得MPG變量的平均值。
proc univariate noprint
data=sashelp.cars(where=(make=:'H'))
outtable=stats (keep=make _var_ _label_ _mean_)
;
class make ;
var mpg: ;
run;
結果
Obs Make _VAR_ _LABEL_ _MEAN_
1 Honda MPG_City MPG (City) 27.8235
2 Hummer MPG_City MPG (City) 10.0000
3 Hyundai MPG_City MPG (City) 23.0000
4 Honda MPG_Highway MPG (Highway) 34.0000
5 Hummer MPG_Highway MPG (Highway) 12.0000
6 Hyundai MPG_Highway MPG (Highway) 29.9167
注:PROC UNIVARIATE不會允許兩個以上的類變量。如果您有兩個以上的類變量,則可以對源數據進行排序,並使用BY
語句而不是CLASS
語句。
如果您需要多個類變量組合(MAKE MAKE * DRIVETRAIN等),那麼您可能需要使用PROC SUMMARY。但是,您將需要轉置數據集以將變量轉換爲行而不是列。 Plus PROC SUMMARY的這種簡單輸出格式的可用統計數量少於OUTTABLE = PROC UNIVARIATE的結果中可用的數量。
%let class_list=make drivetrain ;
%let class_types=() make make*drivetrain ;
%let varlist = mpg: ;
proc summary chartype
data=sashelp.cars(where=(make=:'H'))
;
class &class_list ;
types &class_types ;
var &varlist ;
output out=stats(where=(_stat_='MEAN')) ;
run;
proc transpose data=stats out=want;
by _type_ &class_list ;
var &varlist ;
id _stat_;
run;
proc print; run;
結果
Drive
Obs _TYPE_ Make Train _NAME_ _LABEL_ MEAN
1 00 MPG_City MPG (City) 25.3000
2 00 MPG_Highway MPG (Highway) 31.6333
3 10 Honda MPG_City MPG (City) 27.8235
4 10 Honda MPG_Highway MPG (Highway) 34.0000
5 10 Hummer MPG_City MPG (City) 10.0000
6 10 Hummer MPG_Highway MPG (Highway) 12.0000
7 10 Hyundai MPG_City MPG (City) 23.0000
8 10 Hyundai MPG_Highway MPG (Highway) 29.9167
9 11 Honda All MPG_City MPG (City) 19.6667
10 11 Honda All MPG_Highway MPG (Highway) 23.6667
11 11 Honda Front MPG_City MPG (City) 30.3077
12 11 Honda Front MPG_Highway MPG (Highway) 37.0769
13 11 Honda Rear MPG_City MPG (City) 20.0000
14 11 Honda Rear MPG_Highway MPG (Highway) 25.0000
15 11 Hummer All MPG_City MPG (City) 10.0000
16 11 Hummer All MPG_Highway MPG (Highway) 12.0000
17 11 Hyundai Front MPG_City MPG (City) 23.0000
18 11 Hyundai Front MPG_Highway MPG (Highway) 29.9167
你最好打賭是用ods output
把它弄成一張表,然後用proc transpose
來使它成爲你想要的。 PROC TABULATE
將會做出一些看起來不錯的東西,但不一定對您的特定目的有用。
ods output table=tab_out;
proc tabulate data=sashelp.cars;
class make;
var mpg_city mpg_highway;
tables make*(mpg_city mpg_highway),mean;
run;
ods output close;
proc transpose data=tab_out out=tab_trans;
by make;
var mpg_:;
run;
隨着PROC MEANS
它可以跳過轉,如果你是9.3+和提供給您STACKODSOUTPUT
選項;如果沒有(在舊版本)只是刪除該選項,然後做轉:
ods output summary=means_out;
proc means data=sashelp.cars mean stackodsoutput;
class make;
var mpg_city mpg_highway;
run;
ods output close;
請出示一個例子。什麼是「公制」?你的意思是你想要生成MEAN的分析變量? – Tom