楼主: yayacuiliu
2182 13

【程序求助】如何将赋变量名 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

22%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
2.0004
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
2817 点
帖子
87
精华
0
在线时间
158 小时
注册时间
2008-9-16
最后登录
2024-9-27

楼主
yayacuiliu 发表于 2013-4-5 19:14:55 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
原始数据导入SAS,如下图。有一些问题请高手不吝赐教。
1,如何将从第三列开始的年份和月份数据,如2002, January 2002 等等,赋给该列作为变量名。也就是说将该图中的VAR3换为2002, VAR4换为200201的格式。因为数据很多,如何变成批量实现?
2,如何进行批量删除,比如在该图中如何删除从V3开始一直到V54,观测值都缺失的这一条记录。3,数据的第一列第五行080719Melons(),下面空白的都应该变为这一项。但是因为再下面还有比如080720,怎么实现将他们分别赋给本组?
谢谢!




二维码

扫码加我 拉你入群

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

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

关键词:January Melon 数据导入 原始数据 VaR 程序

5130109.jpg (53.08 KB)

5130109.jpg

080719-20-2002-2004.txt
下载链接: https://bbs.pinggu.org/a-1301446.html

295.98 KB

原始数据,因为有无数个这样的表,希望能得到批量解决的办法。

沙发
zhengbo8 发表于 2013-4-5 19:20:24
原始数据,附件。

藤椅
yayacuiliu 发表于 2013-4-5 19:24:44
zhengbo8 发表于 2013-4-5 19:20
原始数据,附件。
原始的文档是csv格式的,提示我无法上传。

板凳
zhengbo8 发表于 2013-4-5 19:25:49
直接把后缀改为txt,再上传

报纸
yayacuiliu 发表于 2013-4-5 19:32:56
zhengbo8 发表于 2013-4-5 19:25
直接把后缀改为txt,再上传
上传了,这只是原始数据的一部分。还有许多类似的表格。这些表都要合并在一起,所以求批量解决以上3个问题的方法。

地板
zhengbo8 发表于 2013-4-5 19:34:54
yayacuiliu 发表于 2013-4-5 19:32
上传了,这只是原始数据的一部分。还有许多类似的表格。这些表都要合并在一起,所以求批量解决以上3个问题 ...
看不见附件!

7
yayacuiliu 发表于 2013-4-5 19:37:58
zhengbo8 发表于 2013-4-5 19:34
看不见附件!
怎么会啊?不是在那个图下面吗?难道还需要什么设置吗?

8
zhengbo8 发表于 2013-4-6 11:38:09
yayacuiliu 发表于 2013-4-5 19:37
怎么会啊?不是在那个图下面吗?难道还需要什么设置吗?
问题是解决了,我没用宏,还不会,全用data步实现的,步挺多,不过思路还是很清晰的。
1、先把数据导入,生成数据集a
2、再运行

  1. proc contents data = a out = b(keep = name) noprint; run;

  2. data d;
  3.     set b;
  4.     if _N_ in (1,2,42) then delete;
  5. run;

  6. data c;
  7.     set a;
  8.     if _N_=2 then do;

  9.         length code $ 1000;
  10.         length varname $ 50;

  11.         code=catx("|",of VAR3-VAR41);
  12.         do i=1 to 39;
  13.             varname=scan(code,i,"|");
  14.             z=substr(varname,1,1);
  15.             if z='2' then do;
  16.                 varname="ALL_"||varname;
  17.             end;
  18.             output;

  19.         end;

  20.         drop var1-var42 i Country_by_: code;
  21.     end;
  22.    
  23. run;

  24. data e;
  25.     merge d c;
  26. run;

  27. proc sql noprint;
  28.     select compress(name||'='||varname) into:renames separated by ' '
  29.             from e;
  30. quit;


  31. data f;
  32.     set a;
  33.     if _N_ in (1,2,3) then delete;
  34.     missstr=strip(cat(of VAR3-VAR41));
  35.     if missstr="" then delete;
  36.     drop missstr;
  37. run;

  38. data g;
  39.         set f(rename=(&renames.));
  40. run;

  41. proc datasets lib=work;
  42.     delete b c d e f;
  43. quit;
复制代码




2013-04-06_113129.gif



已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
yayacuiliu + 1 + 1 + 1 观点有启发。
admin_kefu + 100 热心帮助其他会员

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

9
yongyitian 发表于 2013-4-6 21:38:05
我理解问题2和3好象应该是这样

/* code for Question 2 and 3 */

/* import the data */
PROC IMPORT OUT= WORK.yyy
   DATAFILE= "F:\MySAS\080719-20-2002-2004.csv"
            DBMS=CSV REPLACE;
     GETNAMES=YES;
     DATAROW=2;
RUN;

/* select the number of variables */
%let nvar=%sysfunc(attrn(%sysfunc(open(work.yyy,i)),nvars));

/* remove the empty row and fill the missing */
data zzz;
  length Country_by_Commodity___Imports $60;
  length var2 $26;
array v{*} $40 var3-var&nvar;
   set yyy;
   miss=0;
retain temp;
if not missing(Country_by_Commodity___Imports) then temp = Country_by_Commodity___Imports;
   else Country_by_Commodity___Imports=temp;
   do i = 1 to dim(v);
      if not missing(v(i)) then miss+1;
          end;
   if miss < 1 and _n_ ^=1 then delete;   /* remove _n_^=1 if don't want the first row */
   drop miss i temp;
run;
proc print data=zzz; title 'zzz'; run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
yayacuiliu + 1 + 1 + 1 有效解决了问题。

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

10
yayacuiliu 发表于 2013-4-7 20:12:25
zhengbo8 发表于 2013-4-6 11:38
问题是解决了,我没用宏,还不会,全用data步实现的,步挺多,不过思路还是很清晰的。
1、先把数据导入 ...
谢谢了,我先学习了。

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

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