请选择 进入手机版 | 继续访问电脑版
楼主: klaudlit
17049 17

[问答] sas 导入csv格式的数据时出问题了,请高手指点 [推广有奖]

  • 5关注
  • 1粉丝

硕士生

36%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
2407 点
帖子
72
精华
0
在线时间
212 小时
注册时间
2012-1-31
最后登录
2024-1-28

klaudlit 发表于 2013-3-17 01:39:05 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
CrgA_E5C8A19B06_03_13_2013_05_24_25_Profile_data.rar (2.77 KB) 本附件包括:
  • CrgA_E5C8A19B06_03_13_2013_05_24_25_Profile_data.csv

导入时语句:
proc import datafile="D:\data\CrgA_E5C8A19B06_03_13_2013_05_24_25_Profile_data.csv"
out=aa dbms=csv replace;
getnames=n; * DATAROW=1;
delimiter=',';
run;
原数据是有81行,而得到的数据只有一行,很多变量,请教高手怎么才能导入后数据样式不变呢??
非常感谢!
二维码

扫码加我 拉你入群

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

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

关键词:高手指点 delimiter delimit Profile replace import csv

klaudlit 发表于 2013-3-17 01:56:22 |显示全部楼层 |坛友微信交流群
定一定自己的帖子,等待高手指点啊。

不知道为什么sas会认定这么多行csv格式的数据为一行啊?

使用道具

webgu 发表于 2013-3-17 08:21:03 |显示全部楼层 |坛友微信交流群
删掉第一行。
proc import datafile="D:\data\CrgA_E5C8A19B06_03_13_2013_05_24_25_Profile_data.csv"
                  out=aa
                  dbms=csv replace;
run;
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

klaudlit 发表于 2013-3-17 09:10:22 |显示全部楼层 |坛友微信交流群
webgu 发表于 2013-3-17 08:21
删掉第一行。
proc import datafile="D:\data\CrgA_E5C8A19B06_03_13_2013_05_24_25_Profile_data.csv"
  ...
谢谢 webgu,删掉第一行是可以的,但是我的数据有很多,不可能一个一个删,太麻烦,请问还有没有别的方法?

使用道具

klaudlit 发表于 2013-3-17 13:06:46 |显示全部楼层 |坛友微信交流群
顶!顶!!顶!!!

使用道具

webgu 发表于 2013-3-17 15:30:08 |显示全部楼层 |坛友微信交流群
这个有些怪异。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

ziyenano 发表于 2013-3-17 17:34:11 |显示全部楼层 |坛友微信交流群
如果以ue或者其他文本文件打开的话,
这个数据集只有回车符而没有换行符,也就是只有\r而没有\n;
所以SAS在读入的时候,只是当做一行来读入。
在ue中使用正则替换,将\r替换为\r\n读入就没有问题了。
当然也可以以文本形式导入到SAS中,将\r替换为\r\n,
导出数据到一个临时文本中,再以proc import导入。

filename ex "D:\tmp.txt";
data aa;
infile "D:\CrgA_E5C8A19B06_03_13_2013_05_24_25_Profile_data.csv" dlm='0D'x lrecl=32767;
/*分隔符是回车符号*/
input x:$2000. @@;
run;
if _n_=1 then do;
retain id;
id=prxparse("s/\r/\r\n/");
delete;
end;
file ex;
call prxchange(id,-1,x);
put x;
run;

proc import out=ab
datafile=ex
dbms=csv
replace;
delimiter=',';
run;
不过此方法也有缺陷,由于当做一行读入,所以lrecl=32767就成了限制。

至于问什么删除掉第一行读入没有问题,
我想应该是在excel中操作的问题,csv默认都会以excel打开;
试验了一下,如果以excel删除掉此文件的第一行,再保存,ue中打开,
所有的\r都已经改为\r\n,此时以proc import读入自然没哟问题;
而如果直接用ue打开,删除掉第一行,\r不会替换成\r\n,导入时应该还是只有一行。
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Imasasor + 100 + 100 + 3 + 3 + 2 精彩帖子

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

使用道具

Imasasor 发表于 2013-3-17 17:46:04 |显示全部楼层 |坛友微信交流群
ziyenano 发表于 2013-3-17 17:34
如果以ue或者其他文本文件打开的话,
这个数据集只有回车符而没有换行符,也就是只有\r而没有\n;
所以SAS ...
牛,回车,换行,\r \n,分隔符是回车时,'oD'x 这些是什么东东啊
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

webgu 发表于 2013-3-17 18:26:37 |显示全部楼层 |坛友微信交流群
ziyenano 发表于 2013-3-17 17:34
如果以ue或者其他文本文件打开的话,
这个数据集只有回车符而没有换行符,也就是只有\r而没有\n;
所以SAS ...
看来装一个UE还是有用处的。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

ziyenano 发表于 2013-3-17 18:42:07 |显示全部楼层 |坛友微信交流群
Imasasor 发表于 2013-3-17 17:46
牛,回车,换行,\r \n,分隔符是回车时,'oD'x 这些是什么东东啊
0D是回车符的ascii代码,SAS中也支持以ascii代码的形式做分隔符

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 18:55