楼主: hbmonkey
1138 5

求助大神,数据结构的变换!! [推广有奖]

  • 1关注
  • 0粉丝

svip3

本科生

44%

(VIP/贵宾)五级

24%

威望
0
论坛币
141096 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
69 点
帖子
4
精华
0
在线时间
189 小时
注册时间
2009-11-9
最后登录
2026-1-30

楼主
hbmonkey 发表于 2013-12-9 21:11:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
之前的数据结构:

户ID   户成员1  户成员2  户成员3  户特征1  户特征2  ····
1         01         02            03          a            b            ····
2         01         02            03          c            d            ····
3         01         02            03          e            f            ····
····

现在我想把上述户case转化为个人case

户ID   户成员  户特征1  户特征2····
1        01         a             b
1        02         a             b
1        03         a             b
2        01         c             d
2        02         c             d
2        03         c             d
····

恳请诸位大神帮忙!跪谢!
二维码

扫码加我 拉你入群

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

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

关键词:求助大神 数据结构 Case CAS

沙发
yangdelong1988 发表于 2013-12-9 22:42:38
将原数据集拆成3个数据集,每个数据集里分别有个户成员,然后再用set纵向合并

藤椅
zhengbo8 发表于 2013-12-9 22:51:08
2楼是正解。

  1. data a;
  2.         input id x1 $ x2 $ x3 $ y1 $ y2 $;
  3. datalines;
  4. 1         01         02            03          a            b            
  5. 2         01         02            03          c            d           
  6. 3         01         02            03          e            f   
  7. ;

  8. data b(drop=i);

  9.         retain id z y:;
  10.         set a;

  11.         str1 = strip(catx("-",of x:));
  12.         str2 = strip(catt(of x:));

  13.         do i=1 to (length(str)-length(str2))/2;
  14.                 z=scan(str1,i,"-");
  15.                 drop x: str:;
  16.                 output ;
  17.         end;

  18. run;
复制代码



已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Imasasor + 100 + 80 + 4 + 2 + 2 分析的有道理

总评分: 经验 + 100  论坛币 + 80  学术水平 + 4  热心指数 + 2  信用等级 + 2   查看全部评分

板凳
zw612003 发表于 2013-12-9 23:06:07
zhengbo8 发表于 2013-12-9 22:51
。。。。。
z=scan(catx("-",of x:),i,"-");  是在提取x&i.吗?好复杂哦,直接z=x&i.不行吗???

报纸
瘠北幼农 发表于 2013-12-9 23:09:30
元数据:

id        var2        var1        q1        q2
1        2        3        a        b
2        2        3        c        d
3        2        3        e        f


程序:reshape long var, i(id) j(p)

结果:

id        p        var        q1        q2
1        1        3        a        b
1        2        2        a        b
2        1        3        c        d
2        2        2        c        d
3        1        3        e        f
3        2        2        e        f

也就是说,使用reshape可以很方便实现。具体用法还得自己研究一下!

地板
yongyitian 发表于 2013-12-10 09:22:46
  1. /* here is a simple way */

  2. data a;
  3.   input id x1 $ x2 $ x3 $ y1 $ y2 $;
  4. datalines;
  5. 1 01 02 03 a b            
  6. 2 01 02 03 c d           
  7. 3 01 02 03 e f   
  8. ; run;

  9. data b;
  10.    set a;
  11.    array idx x1-x3;
  12.    do over idx;
  13.      x = idx;
  14.      output;
  15.    end;
  16.    drop x1-x3;
  17. run;
复制代码

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-31 06:03