我只想知道R table()中每个变量的总频率。我可以在SAS中这样做吗?
我有一个SAS数据集如下。
data level_score;
infile datalines;
input ID $ Level $ SCORE;
return;
datalines;
1 A2 0.2
2 A3 0.8
3 A4 0.3
4 A5 0.2
5 A6 0.2
6 A3 0.6
7 A4 0.2
8 A5 0.6
9 A6 0.2
;
run;
proc print data=level_score;
run;
我想用SAS知道R table()
中Level和SCORE的频率对于变量' Level'
A2 A3 A4 A5 A6
1 2 2 2 2
对于变量' SCORE'
0.2 0.3 0.6 0.8
5 1 2 1
答案 0 :(得分:1)
最简单的方法是在您发现时使用proc freq
。
proc freq data=level_score;
table Level;
run;
然而,还有其他几种计算频率的方法。这里只有两个。
使用proc sql
proc sql;
select Level,
count(*) as Freq
from level_score
group by Level;
quit;
结果:
Level Freq
A2 1
A3 2
A4 2
A5 2
A6 2
使用data step
* First we need to sort the data by the variable of interest;
proc sort data=level_score out=Level_sorted;
by Level;
run;
* Then we use the `by` statement with a retain variable, ;
* here called "count". ;
data _null_;
set Level_sorted;
by Level;
count + 1;
if last.Level then do;
put "Frequency for Level " Level ": " count;
count = 0;
end;
run;
日志显示:
Frequency for Level A2 : 1
Frequency for Level A3 : 2
Frequency for Level A4 : 2
Frequency for Level A5 : 2
Frequency for Level A6 : 2
可以轻松修改后一个示例以生成包含以下频率的数据集:
data Level_freqa;
set level_sorted;
by Level;
count + 1;
if last.Level then do;
output;
count = 0;
end;
drop ID SCORE;
run;