全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5335 4
2014-10-21
悬赏 1000 个论坛币 已解决
1.rar
大小:(149.05 KB)

 马上下载

本附件包括:

  • 1.csv



表面上是一个CSV,逗号分隔符的文件,导入后发现全部变量都是字符型,后来打开看,里面的分隔符是一个逗号加一个Tab, 所以想着在import 时把delimiter写成了'2C09'x,表示逗号和Tab都是分隔符,可是这样导入,仍然全部是字符型变量,而且无法让两个分隔符示为一个分隔符

求大神帮忙看一下

要求:全数字的变量导入为数值格式,年月日导入日期格式,能够在proc import中让系统自动识别类型,不要在data, infile,input中一个个手动写变量的类型

非常感谢,些许论坛币,聊表心意


最佳答案

ziyenano 查看完整内容

data _null_; infile "d:\1.csv" _infile_=x lrecl=32767; file "d:\2.csv" lrecl=32767; input; x=compress(x,'"','s'); put x; run; 上面代码可以把引号和空白符去掉,导出到其他文件中,再用proc import导入。 但是proc import有个缺点,总是根据前面几行就确定了该字段的格式, 所以有可能确定了数值格式,后续出现的字符值就会报错,另外,文件中好像有字段名是相同的。 倒不如用Excel打开csv,转成Excel格式导入 ...
二维码

扫码加我 拉你入群

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

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

全部回复
2014-10-21 11:01:25
data _null_;
infile "d:\1.csv" _infile_=x lrecl=32767;
file "d:\2.csv" lrecl=32767;
input;
x=compress(x,'"','s');
put x;
run;
上面代码可以把引号和空白符去掉,导出到其他文件中,再用proc import导入。
但是proc import有个缺点,总是根据前面几行就确定了该字段的格式,
所以有可能确定了数值格式,后续出现的字符值就会报错,另外,文件中好像有字段名是相同的。

倒不如用Excel打开csv,转成Excel格式导入,不过要批量处理,这个办法就不行了。
二维码

扫码加我 拉你入群

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

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

2014-10-21 12:27:47
你这个存在几个问题
一是CSV文件为逗号分隔符文件,这是SAS系统认定的,你的是表示逗号和Tab都是分隔符,

二是CSV文件中由于不像在EXCEL中每个单元都有格式,所以也无法判断是否是日期
二维码

扫码加我 拉你入群

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

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

2014-10-21 13:08:21
420948492 发表于 2014-10-21 12:27
你这个存在几个问题
一是CSV文件为逗号分隔符文件,这是SAS系统认定的,你的是表示逗号和Tab都是分隔符,
...
用TXT打开看,其实是逗号和Tab两个分隔符,分隔开的
二维码

扫码加我 拉你入群

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

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

2014-10-23 10:55:17
你这个导入和分隔符没什么关系,默认sas9.3可以正确导入数据,主要问题是你的数据文件中,每个变量用引号包含,所以导入会全部是字符型。另外数据不可能导入后就按照你的要求字符型,数值型,日期型都对应好,尤其是你变量这么多的情况,后续整理也很重要。个人觉得你的数据不如先按字符型导入,然后利用宏批量修改,批量修改也很方便,应该比你这个考虑直接导入成你想要的格式方便的多。还有如果变量字符数值都有确实可能会出现楼上说的丢失字符型数据的情况,不如直接字符导入,不会出现丢失数据的情况。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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