全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4340 8
2015-02-05
大家好,近期我拿到一份txt文件,里面内容如下(大概):
3031:1;3032:2;3033:2009;
3031:1;3032:2;3033:2009;
3031:2;3033:2009;
3031:1;3032:2;3033:2009;
内容中;为分隔符,而:前部分代表变量名,后部分代表具体的观测值,好像3031是变量名,1就是具体的观测。而且如果出现缺失的话,就会好像第三行观测一样,直接没了那一个变量。请问应该如何将他们导入SAS?
我的想法是提取3031为变量名,然后输入:后的具体数值,而且需要每一列对应起来,缺失的要填补起来。因为数据高达数万,现在不知道如何是好,求解答,多谢。
二维码

扫码加我 拉你入群

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

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

全部回复
2015-2-5 15:49:06
二维码

扫码加我 拉你入群

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

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

2015-2-5 16:21:04
别再堕落 发表于 2015-2-5 15:49
亲,你有一些小提示给我么~
二维码

扫码加我 拉你入群

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

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

2015-2-5 17:17:17
data _null_;
   infile "test.txt" end=last;
   * Generate code;
   input;
   code="_"||tranwrd(compress(_infile_),";",";_");
   code=tranwrd(compress(code),":","=");

   * Execute;
  if _n_=1 then call execute("data test;");
   call execute(substr(code,1,length(code)-1)||"output;");
    call execute("call missing(of _:);");
  if last then call execute("run;");
run;
二维码

扫码加我 拉你入群

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

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

2015-2-5 17:40:43
pobel 发表于 2015-2-5 17:17
data _null_;
   infile "test.txt" end=last;
   * Generate code;
0 0大神!!!请问,我在运行的时候,因为TXT中存在一些字符型,就是中文数据,就出出现错误,请问怎么解决呢?
就好像这样的数据:
3031:1;3032:2;3033:2009;3044:张;
3031:1;3032:2;3033:2009;3044:张;
3031:1;3033:2009;3044:张;
会出现如下的ERROR:
NOTE: CALL EXECUTE 生成了代码行。
1    + data test;
2    + _3031=1;_3032=2;_3033=2009;_3044=张;output;
ERROR: “张”不是有效的 SAS 名称。
ERROR: “张”不是有效的 SAS 名称。
ERROR: “张”不是有效的 SAS 名称。
3    + call missing(of _:);
4    + _3031=1;_3032=2;_3033=2009;_3044=张;output;
ERROR: “张”不是有效的 SAS 名称。
ERROR: “张”不是有效的 SAS 名称。
ERROR: “张”不是有效的 SAS 名称。
5    + call missing(of _:);
6    + _3031=1;_3033=2009;_3044=张;output;
ERROR: “张”不是有效的 SAS 名称。
ERROR: “张”不是有效的 SAS 名称。
ERROR: “张”不是有效的 SAS 名称。
7    + call missing(of _:);
8    + run;
求解答,多谢~!
二维码

扫码加我 拉你入群

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

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

2015-2-5 20:04:41
pobel 发表于 2015-2-5 17:17
data _null_;
   infile "test.txt" end=last;
   * Generate code;
你好,我分析程序代码发现,只要观测值是中文的,不知道为何就不会纳入到变量里面;
选用:options validvarname=any; 代码以后,
发觉所有的中文的观测值都变成了唯一的变量名。。。有点无从下手了,希望解答,多谢~!
请问问题是出在:   call execute(substr(code,1,length(code)-1)||"output;");么?因为汉字字符型占据的长度是2?
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群