楼主: Actree
2888 13

[问答] 怎样完成以下的数据变形 [推广有奖]

  • 6关注
  • 2粉丝

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
2704 个
通用积分
0
学术水平
9 点
热心指数
12 点
信用等级
8 点
经验
29471 点
帖子
272
精华
0
在线时间
485 小时
注册时间
2010-11-28
最后登录
2020-6-24

楼主
Actree 发表于 2011-2-17 15:15:26 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好,

我现在有个excel数据structure是这样的(真正数据有很多):

Cusip RecDate
1         52524
3         24352
4         23524  2345235 2434524 4545  45454 2345

想把它变成这样一个SAS文件:

Cusip RecDate
1         52524
3         24352
4         23524
4         2345235
4         2434524
4         4545
4         45454
4         2345

应该怎样做?
这个excel文件是C:\test,
能否顺便写出filename和infile statement?
二维码

扫码加我 拉你入群

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

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

关键词:Structure statement filename Statemen excel数据 数据

回帖推荐

情迷仲夏夜 发表于4楼  查看完整内容

这个很简单! data chk(keep=Cusip RecDate); input Cusip RecDate1-RecDate6@@; array d(*) RecDate1-RecDate6; do i=1 to dim(d);if d^=. then do;RecDate=d;output;end;end; cards; 1 52524 . . . . . 3 24352 . . . . . 4 23524 2345235 2434524 4545 45454 2345 ; proc print;run;

本帖被以下文库推荐

沙发
weihancool 发表于 2011-2-17 15:17:34
如果真的只有这几个数据 那手工输入就得啦~~~
国士无双

藤椅
Actree 发表于 2011-2-17 15:22:30
有1000+观测 2# weihancool

板凳
情迷仲夏夜 发表于 2011-2-19 00:32:55
这个很简单!
data chk(keep=Cusip RecDate);
   input Cusip RecDate1-RecDate6@@;
   array d(*) RecDate1-RecDate6;
   do i=1 to dim(d);if d[i]^=. then do;RecDate=d[i];output;end;end;
cards;
1 52524 . . . . .
3 24352 . . . . .
4 23524 2345235 2434524 4545 45454 2345
;
proc print;run;
已有 1 人评分学术水平 热心指数 收起 理由
Actree + 1 + 1 分析的有道理

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

报纸
elek.me 发表于 2011-2-19 11:41:37
  1. proc import datafile="c:\test\have.xls" dbms=excel2000 replace out=have;
  2.         getnames=yes;
  3.         sheet="sheet1";
  4. run;

  5. data want(keep=Cusip RecDate);
  6.         set have;
  7.         array tmp[*] RecDate F:;
  8.         do i=1 to dim(tmp);
  9.                 if not missing (tmp[i]) then do;
  10.                         RecDate=tmp[i];
  11.                         output;
  12.                 end;
  13.         end;
  14. run;
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
Actree + 1 + 1 分析的有道理

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

我的博客: http://elek.me/sas
联系我: http://about.me/elek

地板
webgu 发表于 2011-2-19 13:48:09
filename testfile "c:\test\actree.xls";
proc import datafile=testfile
              out=tmp
                          dbms=excel2000
                          replace;
run;

data want(drop=i rd);
  set tmp(rename=(Recdate=rd));
  i=1;
  do while(scan(rd,i,"")^="");
    RecDate=scan(rd,i,"");
        output;
        i+1;
  end;
proc print;
run;
已有 1 人评分学术水平 热心指数 收起 理由
Actree + 1 + 1 分析的有道理

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

7
webgu 发表于 2011-2-19 14:02:23
5# elek.me
好像没进行分割?

8
elek.me 发表于 2011-2-19 14:07:57
webgu 发表于 2011-2-19 14:02
5# elek.me
好像没进行分割?
分割?
它的多个RecDate如果不是在一个单元格里。 没必要分割
我的博客: http://elek.me/sas
联系我: http://about.me/elek

9
webgu 发表于 2011-2-19 16:19:31
8# elek.me 明白了,那是把多列合到一列里。by the way,你的回复怎么带有代码行,还可以直接复制,这是如何弄的?

10
Actree 发表于 2011-2-19 18:50:09
请看这个帖子,告诉怎样写漂亮的表格
http://www.pinggu.org/bbs/thread-1026282-1-1.html 9# webgu

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

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