這是一個新手SAS問題。我有一個包含數值變量v1-v120,V和分類變量Z(帶有三個可能值)的數據集。對於Z的每個可能值,我想得到另一組變量w1-w120,其中w {i} = sum(v {i}}/V,其中sum是給定Z值的和。在這種情況下,我正在尋找3 * 120矩陣,我可以在數據步驟中完成此操作,但希望通過Proc SQL或Proc MEANS來完成,因爲實際數據集中的分類變量的數量適中。 。SAS程序SQL和數組
1
A
回答
3
下面是使用PROC SQL的解決方案。你也許還做PROC類似使用的輸出數據集的手段和一個「由」語句。
data t1;
input z v1 v2 v3;
datalines;
1 2 3 4
2 3 4 5
3 4 5 6
1 7 8 9
2 4 7 9
3 2 2 2
;
run;
%macro listForSQL(varstem1, varstem2, numvars);
%local numWithCommas;
%let numWithCommas = %eval(&numvars - 1);
%local i;
%do i = 1 %to &numWithCommas;
mean(&varstem1.&i) as &varstem2.&i,
%end;
mean(&varstem1.&numvars) as &varstem2.&numvars
%mend listForSQL;
proc sql;
create table t2 as
select
z,
%listForSQL(v, z, 3)
from t1
group by z
;
quit;
3
很容易與proc means
做到這一點。使用t1
來自Louisa Gray的回答數據集:
proc means data=t1 nway noprint;
class z;
var v1-v3;
output out=t3 mean=w1-w3;
run;
這會創建一個匹配SQL結果的結果表。
+0
Proc手段將工作..但如果您需要創建一個新的變量(在proc語句內)使用兩個現有的變量然後proc意味着失敗 – user227290 2011-06-27 05:01:50
+0
不知道什麼你的意思是 - 你在問題的例子中使用了兩個變量嗎?您可以隨時使用數據視圖來生成變量,而無需實際使用I/O資源。 – itzy 2011-06-27 17:12:55
相關問題
- 1. SQL和SAS編程
- 2. Sas進程sql
- 3. SAS和PROC SQL
- 4. SAS程序刪除和數據集
- 5. PROC SQL SAS編程
- 6. SAS宏:在宏程序中使用sql
- 7. 從SAS程序
- 8. SQL SELECT語句和SAS
- 9. SAS:在proc sql求和
- 10. SAS宏和數組的表名
- 11. 控制程序流程 - sas
- 12. 打開SAS數據集以便在.sas程序中查看
- 13. SAS sql。如何使用行列sas sql?
- 14. 搜索條件和組SAS
- 15. SAS Maco程序字符到數字
- 16. SQL組和秩序
- 17. SAS Proc SQL計數問題
- 18. SAS:數據步與PROC SQL
- 19. SQL數和組
- 20. 在PROC SQL中使用組SAS
- 21. sas Proc擴展程序
- 22. SAS:傳遞數組名稱
- 23. SAS:數組傳遞給宏
- 24. 提取XML數組值SAS
- 25. SAS嵌套數組循環
- 26. SAS數組下標越界
- 27. 別名和組通過SAS PROC SQL語句
- 28. 對於每個組,SAS/SQL總和明顯不同?
- 29. Proc SQL在SAS網格和SAS 9.3上使用SAS 9.4提供不同結果
- 30. SQL組和計數
謝謝..我認爲我們需要使用宏這 – user227290 2011-06-18 02:39:55