楼主: Lotus10
2304 5

[问答] SAS如何通过循环截取数据形成新的表格? [推广有奖]

  • 0关注
  • 0粉丝

已卖:619份资源

硕士生

25%

还不是VIP/贵宾

-

威望
0
论坛币
5237 个
通用积分
4.7050
学术水平
8 点
热心指数
0 点
信用等级
0 点
经验
854 点
帖子
24
精华
0
在线时间
267 小时
注册时间
2015-3-11
最后登录
2025-10-17

楼主
Lotus10 发表于 2018-8-26 20:23:10 |AI写论文
30论坛币
现用SAS处理如下格式的数据。每张表格有30列(名称,分数,名称,分数。。。一共30列),每个日期都有一张,一共有500张左右的表格。
图.jpg



想要导入后进行整理成整理后数据的格式(名称,分数,日期三列)。
图2 (1).jpg



目前思路是循环导入原始数据(import函数是否可以循环,怎么写代码),然后循环截取第1、2列,3、4列,5、6列。。。。再重新合并为一张表,

加入时间变量。


代码data temp1; do i=1 to 29 by 2 j=i+1,keep 列i 列j;run; 但是只能循环数字,“列i”就识别不出来了。

求高手相助!!!!!


图.jpg (47.37 KB)

图.jpg

20151114.xlsx
下载链接: https://bbs.pinggu.org/a-2542778.html

13.95 KB

20151115.xlsx

16.78 KB

沙发
superguy333 发表于 2018-8-27 11:07:33
请养成一个好的习惯,上传数据

藤椅
Lotus10 发表于 2018-8-27 11:25:51
superguy333 发表于 2018-8-27 11:07
请养成一个好的习惯,上传数据
上传了两个数据范例,实际数据大很多,麻烦高手帮看看~~

板凳
superguy333 发表于 2018-8-27 23:24:12
Lotus10 发表于 2018-8-27 11:25
上传了两个数据范例,实际数据大很多,麻烦高手帮看看~~
数据文件太少不利于写宏,单个数据文件可以搞定,加QQ46520630详谈。

报纸
Lotus10 发表于 2018-8-28 11:31:04
superguy333 发表于 2018-8-27 23:24
数据文件太少不利于写宏,单个数据文件可以搞定,加QQ46520630详谈。
我已经自己解决了,谢谢

地板
superguy333 发表于 2018-8-28 20:02:21
  1. %LET start_DATE=20151114;
  2. %let filepath=C:\Users\Administrator\Documents;

  3. PROC IMPORT OUT= WORK.date&start_DATE
  4.             DATAFILE= "&filepath\&start_DATE..xlsx"
  5.             DBMS=excel REPLACE;
  6.      RANGE="Sheet1$";
  7.      GETNAMES=YES;
  8.      MIXED=NO;
  9.      SCANTEXT=YES;
  10.      USEDATE=YES;
  11.      SCANTIME=YES;
  12. RUN;

  13. DATA date&start_DATE (KEEP= NAME code );
  14. SET date&start_DATE ;
  15. array  _COL{0:29} _COL0-_COL29  ;
  16.      do i=0 to 29;
  17.             do;
  18.         IF MOD(I,2)=0 THEN    NAME= _COL{I} ;  
  19.         ELSE    DO;  CODE=_COL{I} ;OUTPUT; END;
  20.                 END;
  21.      end;

  22. run;

  23. DATA date&start_DATE (KEEP= NAME code yyyymmdd);
  24. SET date&start_DATE ;
  25. yyyymmdd=&start_DATE ;
  26. run;
复制代码

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

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