楼主: crackman
2106 1

跟crackman读SAS程序(85)--二维数组的应用实例 [推广有奖]

已卖:401份资源

院士

83%

还不是VIP/贵宾

-

威望
6
论坛币
91928 个
通用积分
23.5045
学术水平
424 点
热心指数
505 点
信用等级
256 点
经验
112978 点
帖子
2940
精华
0
在线时间
2532 小时
注册时间
2007-4-26
最后登录
2025-6-25

初级热心勋章 中级热心勋章 初级学术勋章 初级信用勋章

楼主
crackman 发表于 2010-10-27 22:19:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
更多原创:http://crackman.net/
问题:

现有数据集X,形式如下
a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3
1 2 3 1 2 2 3 4 2 6 5 8

现在要把数据集x变成如下的样子
a b c d
1 2 3 1
2 2 3 4
2 6 5 8
答案:

data raw;
    input a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3;
datalines;
1 2 3 1 2 2 3 4 2 6 5 8
11 12 13 11 12 12 13 14 12 16 15 18
;
data out;
    set raw;
    array temp(3,4) _numeric_;/*这个数组其实就是把数据集中的所有变量值按照三行四列的形式存储才数组中,这里非常值得注意和学习,一个观测如何存储在数组中*/
    array out(4) a b c d;
    do i=1 to dim1(temp);/*第一个循环是行循环,先从第一行开始,然后逐个循环列数,并通过行数和列数确定具体的数值赋值给另外一个数组,这里面输出的数组与二维数组的列数是一致,也就是结合点,在数组循环之中,最关键就是识别的结合点*/
        do j=1 to dim2(temp);
            out(j)=temp(i,j);
        end;
        output;
    end;
    keep a b c d;
run;

另外一个答案:

data have;
input a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3;
cards;
1 2 3 1 2 2 3 4 2 6 5 8
;

data wanted(keep= a b c d);
set have ;
array aa (3) a1-a3;
array bb (3) b1-b3;
array cc (3) c1-c3;
array dd (3) d1-d3;
do i=1 to 3;
a=aa(i); b=bb(i); c=cc(i); d=dd(i);
output;
end;
run;
其实这个就是分组建立数组,然后在SET读取每一个观测时,根据变量的规律将数值赋值给制定变量

原问题:http://mysas.net/forum/viewtopic.php?f=4&t=6777
二维码

扫码加我 拉你入群

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

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

关键词:crackman Ackman sas程序 CRACK 应用实例 SAS crackman

已有 2 人评分学术水平 热心指数 信用等级 收起 理由
peijiamei + 3 + 2 精彩帖子
pobel + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 4  热心指数 + 3  信用等级 + 1   查看全部评分

沙发
ryuuzt 发表于 2010-10-28 10:52:36
每次来都能学到些不错的东西。感谢版主辛苦整理,原创。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 19:01