【问题标题】:Simplifying the variable input in SAS简化 SAS 中的变量输入
【发布时间】:2014-11-04 22:07:12
【问题描述】:

我的数据中有 90 个变量,我想在 SAS 中执行以下操作。

这是我的 SAS 代码:

data test;
  length id class sex $ 30;
  input id $ 1 class $ 4-6 sex $ 8 survial $ 10;
cards;
1  3rd F Y
2  2nd F Y
3  2nd F N
4  1st M N
5  3rd F N
6  2nd M Y
;
run;
data items2;
set test;
length tid 8;
length item $8;
tid = _n_;
item = class;
output;
item = sex;
output;
item = survial;
output;
keep tid item;
run;

如果我有 90 个变量来输入这样的数据怎么办?应该有一个很长的清单。我想简化它。

【问题讨论】:

    标签: variables input sas


    【解决方案1】:

    您可以使用 ARRAY 或 PROC TRANSPOSE。

    以下内容未经测试,因为您没有提供输入数据集的示例。

    DATA ITEMS;
    ARRAY VARS {*} VAR1-VAR90;
    SET REPLACE;
    DO I = LBOUND(VARS) TO HBOUUND(VARS);
        ITEM = VARS{I};
        OUTPUT;
    END;
    RUN;
    

    PROC TRANSPOSE DATA = TEST OUT = WANT;
        BY ID;
        VAR CLASS -- SURVIAL;
    RUN;
    

    将来最好是您可以提供您的输入和所需的输出。

    【讨论】:

    • 谢谢,我刚刚更新了我的代码,我更喜欢使用Proc转置,或者你的方法还可以,你可以重写代码吗?
    • ,我运行你的代码,但我认为proc转置不正确。
    • 错误是这样的:ERROR: Variable _84001 cannot be found on the list of previous defined variables。 _84001 是我的真实变量之一。
    【解决方案2】:

    我似乎无法对上述答案添加另一条评论,因此我在这里添加一条。

    您需要扩展 VAR 语句以包含您想要转置的所有变量。

    CLASS -- SURVIAL 表示介于 CLASS 和 SURVIVAL 之间的所有变量。

    发布您的代码和错误,以便我可以更好地帮助您。

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      相关资源
      最近更新 更多