我有一個包含564個變量的sas數據集。我需要創建一個帶有三列的新表,column1將是變量名稱,column2將是該變量的值,並且column3將是觀察編號。 因此,如果我有變量性別,則性別將在變量列中列出2次,並且性別值將在第一行中列爲m,在第二行中列爲女性,並且列3將只是觀察。這是它應該看起來的樣子。提前謝謝了。將proc freq輸出轉換爲數據集
var value obs
gender m 1
gender f 2
ans yes 3
ans no 4
我有一個包含564個變量的sas數據集。我需要創建一個帶有三列的新表,column1將是變量名稱,column2將是該變量的值,並且column3將是觀察編號。 因此,如果我有變量性別,則性別將在變量列中列出2次,並且性別值將在第一行中列爲m,在第二行中列爲女性,並且列3將只是觀察。這是它應該看起來的樣子。提前謝謝了。將proc freq輸出轉換爲數據集
var value obs
gender m 1
gender f 2
ans yes 3
ans no 4
有一列中所有值得到一個表出來的PROC FREQ
的關鍵是ods output
與coalescec
結合。
ODS OUTPUT
讓你告訴PROC FREQ
把所有東西放到一個數據集中(而不是out=
,它只是將一個頻率表放到一個數據集中)。這給了你一個稍微凌亂的結果,然後我們使用coalescec
來修復。該函數獲取變量列表並返回它們的第一個非缺失值;由於F_
變量總是隻填充一個值(表格中變量的格式化值),所以使用它們很容易。
ods output onewayfreqs=freqs;
proc freq data=sashelp.class;
tables age sex;
run;
ods output close; *technically unneeded but makes it more clear;
data want;
set freqs;
value = left(coalescec(of f_:));
run;
上面提到的其餘部分對於該數據集來說是微不足道的。
喬......你是個天才......很多人很感謝。 – user601828
未來,通過提供樣本數據和您用於運行頻率的代碼,可以更好地解決這類問題。 – Joe