如何使用SAS计算列中每个观察的频率,如R

如何使用SAS计算列中每个观察的频率,如R,sas,frequency,Sas,Frequency,我只想知道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

我只想知道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表()中的级别和分数频率

对于变量“Level”

A2 A3 A4 A5 A6
 1  2  2  2  2
对于变量“分数”

0.2 0.3 0.6 0.8
  5   1   2   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;
* 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;
结果:

Level Freq 
   A2    1 
   A3    2 
   A4    2 
   A5    2 
   A6    2 
使用
数据步骤在日志上显示频率

proc sql;
  select Level, 
         count(*) as Freq
    from level_score
    group by Level;
quit;
* 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;

请看proc Freq,谢谢您提供的信息。我是SAS和R的新手。现在我知道如何解决它了proc freq data=等级分数;表级别;运行;`-->如在R表(水平)可能重复的,非常感谢!!我从你的回答中学到了很多。太好了。再次感谢。