SAS:COUNT()函数可以用于分类变量吗?

时间:2015-10-23 22:22:05

标签: count sas

分类变量是“unique_carrier”,如下所示: enter image description here

我想计算变量“unique_carrier”中每个载波的数量,我在SAS中的代码如下,

PROC MEANS DATA=schedule_Jan NOPRINT; 
BY unique_carrier  _CHARACTER_ ;
OUTPUT OUT= flight_count COUNT(unique_carrier) =number_of_flights;
RUN;

但运行此行时出现问题(如下所示),日志是,我想知道COUNT函数是否可以用于计数分类变量:

222  OUTPUT OUT= flight_count COUNT(unique_carrier) =number_of_flights;
                              -----
                              22
                              76
ERROR 22-322: Syntax error, expecting one of the following: ;, (, /, CSS, CV, IDGROUP, IDGRP,
              KURTOSIS, LCLM, MAX, MAXID, MEAN, MEDIAN, MIN, MINID, MODE, N, NMISS, OUT, P1,
              P10, P20, P25, P30, P40, P5, P50, P60, P70, P75, P80, P90, P95, P99, PROBT, Q1,
              Q3, QRANGE, RANGE, SKEWNESS, STDDEV, STDERR, SUM, SUMWGT, T, UCLM, USS, VAR.

ERROR 76-322: Syntax error, statement will be ignored.

1 个答案:

答案 0 :(得分:1)

您可以使用PROC FREQ来获取点数。

proc freq data=schedule_Jan ;
  tables unique_carrier / noprint out=flight_count ;
run;

这将具有变量COUNT中UNIQUE_CARRIER的每个值的观察数。如果需要,您可以添加数据集选项以将其重命名为NUMBER_OF_FLIGHTS。

或者您可以使用PROC MEANS(又名PROC SUMMARY)。

proc summary data=schedule_Jan nway;
  class unique_carrier;
  output out=flight_count ;
run;

这将包含变量_FREQ_中的观察数量。您可以使用dataset选项重命名此选项,或将N=number_of_flights添加到OUTPUT语句,以添加具有相同计数的另一个变量。

或者您甚至可以通过编写一些SQL代码来“自己动手”。

proc sql ;
  create table flight_count as
    select unique_carrier
         , count(*) as number_of_flights
    from schedule_Jan
    group by 1
    order by 1
  ;
quit;