【问题标题】:weighted crosstable in SASSAS中的加权交叉表
【发布时间】:2019-08-19 08:47:15
【问题描述】:

假设我有下表:

id | var1 | var2 | count
1  | a    | b    | 3
2  | b    | a    | 4 
3  | c    | e    | 1

现在我想计算一个交叉表:

PROC TABULATE;
   CLASS var1 var2;
   TABLE var1, var2;
RUN;

但是,我的问题是 count-变量让我们说 4 表示特定情况实际上应该在表中出现 4 次。所以上表应该是:

id | var1 | var2 | count
1  | a    | b    | 3
1  | a    | b    | 3
1  | a    | b    | 3
2  | b    | a    | 4 
2  | b    | a    | 4 
2  | b    | a    | 4 
2  | b    | a    | 4 
3  | c    | e    | 1

是否有可能直接在PROC TABULAR 内对案例数量进行加权,或者如何根据count 的值添加其他案例?

【问题讨论】:

    标签: sas reshape tabulate


    【解决方案1】:

    使用 FREQ 语句

    data test;
       infile cards dsd dlm='|' firstobs=2;
       input id (var1-var2)(:$1.) count;
       list;
       cards;
    id | var1 | var2 | count
    1  | a    | b    | 3
    2  | b    | a    | 4 
    3  | c    | e    | 1
    ;;;;
    proc print;
       run;
    PROC TABULATE;
       FREQ count;
       CLASS var1 var2;
       TABLE var1, var2;
       RUN;
    

    【讨论】:

      【解决方案2】:

      为什么不使用普通数据步来复制行?比做任何你想做的事。

      data want;
        set have;
        do _i = 1 to count;
          output;
        run;
        drop _i;
      run;
      proc print;run;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-30
        • 1970-01-01
        • 2017-04-03
        • 2021-03-19
        • 2018-06-06
        • 1970-01-01
        • 2021-03-19
        相关资源
        最近更新 更多