楼主: 2102514949
2079 10

[问答] sas有没有办法把多列变成一个组? [推广有奖]

  • 0关注
  • 0粉丝

小学生

21%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
65 点
帖子
7
精华
0
在线时间
0 小时
注册时间
2017-7-20
最后登录
2017-7-27

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
初学sas请问下,我从数据库读取了很多列需要方差计算以其中一列作为分类,怎么计算全部列,或者给列加一个分组。还望赐教。
data lss.stu2;
        merge oracle.sas_student oracle.sas_stu_information;
        by stu_id;
        drop autoid class_id stu_id comm autoid stu_id stu_name id sex stu_type nation place birthday score enrollment_id examinee_id address parent_information in_time college_id college professional grade class_name state
         special_type campus transactions f_language dormitory graduation_type in_date graduation_id out_date political_outlook middle_school professional_id;
run;
proc glm data=lss.stu2;
        class sex_en;
        model a220000120=sex_en;
        means sex_en/lsd;
run;


其中a220000120是其中一列 相同的列数有上百条。请问如何才能给列编一个组。如果一个一个输入实在需要耗费太大经历和时间。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


回帖推荐

沙发
7s7hyd 在职认证  发表于 2017-7-25 19:24:12 来自手机 |只看作者 |坛友微信交流群
用array 定义变量组应该可以,楼主是想每一个列的变量都去求方差吗?

使用道具

藤椅
2102514949 发表于 2017-7-26 08:27:11 |只看作者 |坛友微信交流群
7s7hyd 发表于 2017-7-25 19:24
用array 定义变量组应该可以,楼主是想每一个列的变量都去求方差吗?
我试过了,我在data里定义了一个array a
  • {列名称......}。但是在proc 里使用a去运算。报错找不到a这个变量。
    是的就是想每一列都去求方差。但是可能也会做其他运算。
  • 使用道具

    1. data _null_;
    2.         array outcome{3}$xx outcome1-outcome3 ("xxxxx" "xxxxx" "xxxxx");
    3.         do i=1 to 3;
    4.                 call execute ("proc glm data=lss.stu2; class sex_en; model "||outcome{i}||"=sex_en; means sex_en/lsd; run;quit;");
    5.         end;
    6. run;
    复制代码

    使用道具

    报纸
    2102514949 发表于 2017-7-26 08:53:08 |只看作者 |坛友微信交流群
    大片阳光因你 发表于 2017-7-26 08:46
    感谢您。但是还是有点小问题。
    data _null_;
            array outcome{3}$xx outcome1-outcome3 ("a651130200" "a650000580" "a680000300");
            do i=1 to 3;
                    call execute ("proc anova data=lss.stu2; class sex_en; model "||outcome{i}||"=sex_en; means sex_en/lsd; run;quit;");
            end;
    run;

    报错:
    ERROR: Too many variables defined for the dimension(s) specified for the array outcome.
    他说我的变量太多了。

    使用道具

    2102514949 发表于 2017-7-26 08:53
    感谢您。但是还是有点小问题。
    data _null_;
            array outcome{3}$xx outcome1-outcome3 ("a65113 ...
    $xx
    ……

    这个是定义长度的 哥。。。

    使用道具

    7
    2102514949 发表于 2017-7-26 11:19:36 |只看作者 |坛友微信交流群
    大片阳光因你 发表于 2017-7-26 11:00
    $xx
    ……
    懂了 十分感谢。还没看到宏所以不太懂宏的代码。十分感谢您。

    使用道具

    8
    2102514949 发表于 2017-7-26 15:41:10 |只看作者 |坛友微信交流群
    大片阳光因你 发表于 2017-7-26 11:00
    $xx
    ……
    您好 用您这个方法我发现有个问题 如果我用princomp这个函数的话还是无法一起计算。
    代码如下:
    proc princomp data=lss.stu2;
            var a651130200 a650000580 a680000300 a651381000 a680000103 a680000200;
    run ;
    我还是只能一个一个添加变量 我用数组试了下。var后面如果跟date里的数组会报错。
    Illegal reference to the array outcome

    代码如下
    call execute ("proc princomp data=lss.stu2; var "||outcome||"; run;quit;");


    在此感谢您帮了我这么多,还望闲暇之余指导下我这个小白。

    使用道具

    2102514949 发表于 2017-7-26 15:41
    您好 用您这个方法我发现有个问题 如果我用princomp这个函数的话还是无法一起计算。
    代码如下:
    proc p ...
    我试了下没问题
    数组不能直接用outcome引用 需要加序列号引用
    1. data _null_;
    2.         array outcome{3}$12 outcome1-outcome3 ("Height" "Weight" "Diastolic");
    3.         do i=1 to 3;
    4.                 call execute ("proc princomp data=sashelp.heart;var "||outcome{i}||"; run;");
    5.         end;
    6. run;
    复制代码

    使用道具

    10
    2102514949 发表于 2017-7-27 08:31:21 |只看作者 |坛友微信交流群
    大片阳光因你 发表于 2017-7-26 18:58
    我试了下没问题
    数组不能直接用outcome引用 需要加序列号引用
    主成分分析必须要多列一起分析才有意义~~ 所以想所有数组内的一并分析了~~

    使用道具

    您需要登录后才可以回帖 登录 | 我要注册

    本版微信群
    加好友,备注cda
    拉您进交流群

    京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

    GMT+8, 2024-5-4 07:06