作者dofu1943 (那就念吧~~)
看板Statistics
标题[程式] sas 汇入csv档的问题
时间Sat Jan 22 16:32:23 2022
TITLE请注名软体类别 如[程式] stata
SAS
[软体程式类别]:
SAS
[程式问题]:
资料处理
[软体熟悉度]:
新手
[问题叙述]:
资料长成这个样子
var1, var2, var3, var4, var5
111222333444555, 14, , 201008, U
222333444555666, 67, nui, 200812,
我的资料是csv逗号分隔的型态
第1个变数的长度固定为15码,第2个变数也是固定长度
但第3个变数开始有的观察值是missing
第5个变数也是有的观察值是missing
而且每一个观察值会missing的栏位都不太一样
我本来是使用程式范例(在下面程式1)的指令汇入
资料是可以依逗号汇入,但第1个变数被sas判定为数字,所以会显示成科学符号
不知道有没有方法可以在汇入时就将该变数指定为字串,而不要是数字
另外
我也有想过用INFILE的方式
但因为刚才有提到,写到第3个变数时有的观察值missing的位置不一样
所以也没办法用程式2的指令指定位置
所以能不能使用proc import
在汇入时就将该变数指定为字串
让长度比较长的变数可以完整的显示出来
感谢版友解惑
[程式范例]:
(程式1)
PROC IMPORT OUT= WORK.data2
DATAFILE= "\\xx\xxx\data2.csv"
DBMS=CSV REPLACE;
delimiter=",";
GETNAMES=no;
DATAROW=1;
GUESSINGROWS=1000 ;
RUN;
以上程式也贴在这个网址
https://ideone.com/dP7kOF
(程式2)
libname x "\\xx\xxx\";
FILENAME IN1 '\\xx\xxx\data2.csv';
DATA WORK.data2;
INFILE IN1 MISSOVER PAD delimiter=',' dsd;
INPUT
var1 $1-15 var2 $18-19 ;
RUN;
https://ideone.com/fj78PO
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.241.87.243 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1642840349.A.92B.html
1F:→ hank4465: 应该是预设的栏位长度不够,用length新增一个栏位把长度 01/23 07:46
2F:→ hank4465: 设长一点或许能解决 01/23 07:46
我看网路上PORC IMPORT
有关长度的问题就是加GUESSINGROWS
大大的用length是指这个吗?
3F:→ jupit: proc import其实只是infile的interface,要改属性可以从log 01/23 14:50
4F:→ jupit: 把程式码贴出来用, 或者可以在proc import加GUESSINGROWS= 01/23 14:51
5F:→ jupit: 去增加proc import判断属性的行数,就不会被截断了 01/23 14:52
我的GUESSINGROWS=1000了
还是不够长会被截断吗?
※ 编辑: dofu1943 (36.228.56.68 台湾), 01/23/2022 15:22:09