计算和汇总SAS中组发生观察的时间

时间:2015-06-18 17:05:31

标签: count sas output

说我有以下数据:

   Ad_Code     Employers          State    City
    246         McDonald           CA      Los Angeles
    345         Mcdonald           CA      Los Angeles
    4547        Mcdonald           CA      Los Angeles
    4563        TJMax              CA      SanFran
    5475        TJMax              CA      SanFran
    23          TJMax              CA      SanFran
    6           BestBuy            CA      SanFran
    66747       BestBUy            CA      SanFran
    7           Walmart            CA      Los Angeles
    71          Walmart            CA      Lost Angeles

现在,我想创建一个计划,该计划将在州内以及每个州的每个城市展示大多数广告的前2名雇主。例如,对于洛杉矶来说,前2名雇主将是麦当劳和沃尔玛,而对于San Fran来说,它将是TJMax和Best Buy。而对于整个加利福尼亚州来说,前两名雇主将是TJMax和BestBuy。我的问题的另一部分是创造一种" count"来自AD_Code的方法。因此,我的excel表格(每个城市的每张表格,然后是每个州)将如下所示:

表1(state_CA)

Employer   Count 
TJMAX        3
BestBuy      3 

表2(City_LA)

 City   Employer   Count
  LA    McDonald    3
  LA    Walmart     2

表3(City_SF)

 City   Employer   Count
  SF    TJMAX       3
  SF    BestBuy     2

另外,如何从Ad_code获取计数?有没有办法计算值在AD_code列中显示的时间,然后为其赋值1,然后将Ad_code中显示的所有值加起来并将其放在名为Count的新列标题下?我将如何完成这项任务?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我接近这个的一般方式:

  1. PROC MEANS,使用两个分组变量的class语句,以及type语句定义您想要的那些分组变量的组合类型(听起来只是一种方式) ,所以你甚至可以使用ways=1)。将数据集输出到所需的统计数据。

  2. 使用数据步骤或proc rank来计算排名,并只保存您想要的排名(所以rank le 2或某些此类排名)。

  3. 获取输出数据集并使用带有proc export子句的where将其导出,或者如果要编写许多导出,请使用数据驱动方法生成对运行的宏的宏调用你的proc出口给你。为此目的搜索“数据驱动编程SAS”。