楼主: edwardzxf
14697 8

Proc import 变量格式 [推广有奖]

  • 0关注
  • 2粉丝

讲师

26%

还不是VIP/贵宾

-

威望
0
论坛币
222 个
通用积分
0.3603
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
3991 点
帖子
242
精华
0
在线时间
375 小时
注册时间
2010-7-30
最后登录
2021-5-25

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我想到导入一个csv文件,要让变量的格式尽量是其最佳形式,即尽量不是字符型的。如,能是数字型的就尽量是数字型的,能是时间型的就尽量还是时间形式的,而不是读成字符型的。但问题是,如果某个变量缺失的厉害,本来数字型的也会导入成字符型的,我想尽量避免这种情况。我发现可以通过 GUESSINGROWS 设置抓取所要的格式。可新的问题是,我在一个宏程序里,循环导入很多这样的csv,对 GUESSINGROWS的设置自然不同,如我硬性设定一个值,如 GUESSINGROWS=80,某些变量的类型还是抓取不准确。请问哪位大侠,帮我想想解决的办法。非常感谢?

PROC IMPORT OUT=&Datset._final
     DATAFILE='D:\SAS\CSMAR_Datset\&csv.csv'
     DBMS=csv REPLACE;            
     GETNAMES=YES;
     DataRow=4;  ***The row start to read;
     GUESSINGROWS=80; ***The rows used to determine the var format;
RUN;

二维码

扫码加我 拉你入群

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

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

关键词:import Port ROC determine Guessing import 程序

沙发
moyunzheng 发表于 2013-7-26 08:28:02 |只看作者 |坛友微信交流群
我经常是把GUESSINGROWS设置成一个很大的值,比如所有数据集中最大的观测数的一半,这样虽然import花多一点时间,但是可以尽量保证没问题

使用道具

藤椅
edwardzxf 学生认证  发表于 2013-7-26 13:44:32 |只看作者 |坛友微信交流群
moyunzheng 发表于 2013-7-26 08:28
我经常是把GUESSINGROWS设置成一个很大的值,比如所有数据集中最大的观测数的一半,这样虽然import花多一点 ...
嗯,这个方法我也试过,不过我发现,GUESSINGROWS设的太大了,容易把数字型的识别为字符型的。我的猜测是,如用的数据多,SAS便很难guess了,以至于于就识别成字符型的。你有发现此问题不,还有其它更合算的方案不?谢谢

使用道具

板凳
moyunzheng 发表于 2013-7-27 19:21:06 |只看作者 |坛友微信交流群
GUESSINGROWS的大小应该不会把数字型的识别为字符型吧,出现这样的情况我觉得是在Excel中那一列的格式是文本,特别是如果前面有'符号显式标识为文本。
如果导入的Excel格式完全相同,那么使用VBA应该是最好的选择,此方法可以将文件夹下的所有Excel合并到一张表。此时如果合并的表观测过大,可以考虑在ACCESS中使用VBA。

使用道具

报纸
edwardzxf 学生认证  发表于 2013-7-30 11:49:11 |只看作者 |坛友微信交流群
你说的VBA方法听起来对我很实用,具体能否举个例子还说明下,VBA是怎么合并Excel表格的?非常感谢!!

使用道具

地板
yongyitian 发表于 2013-7-30 12:07:07 |只看作者 |坛友微信交流群
有一个有效的方法是在用 proc import 前 对excel file 做一点处理。

其实很简单,只要在所有数据前加一行(或几行)无缺失值的数据,并把 gusessrow 设为1 或已知的行数。最后把这一行(或几行)数据从imported 数据集中删除就可以了。

加入的数据应与原数据类型相同,而且不应被 proc import 误读。 比如数值变量要有小数点,字符变量的长度要足够长,时间变量要正确等。

使用道具

7
edwardzxf 学生认证  发表于 2013-7-31 14:22:05 |只看作者 |坛友微信交流群
yongyitian 发表于 2013-7-30 12:07
有一个有效的方法是在用 proc import 前 对excel file 做一点处理。

其实很简单,只要在所有数据前加一 ...
嗯,你说的方法是简洁有效。可生产这样的第一行有点繁琐,我要导入的数据有点多,每个CSV都不一样,要写程序去判断每一个变量的最佳类型。

使用道具

8
fxf258 发表于 2013-7-31 16:26:54 |只看作者 |坛友微信交流群
yongyitian 发表于 2013-7-30 12:07
有一个有效的方法是在用 proc import 前 对excel file 做一点处理。

其实很简单,只要在所有数据前加一 ...
这种方法我这样做过,就是有点麻烦,有没有更好的办法呢?请高手来解决吧
海象

使用道具

9
davidcai1221 发表于 2015-1-20 01:51:19 |只看作者 |坛友微信交流群
moyunzheng 发表于 2013-7-26 08:28
我经常是把GUESSINGROWS设置成一个很大的值,比如所有数据集中最大的观测数的一半,这样虽然import花多一点 ...
我用proc import代码去读一个数据,路径写的也是正确的该文件存储位置,但有Note提示说文件不存在。
另求给我讲讲 什么时候用proc import 又什么时候用 LIBNAME Ass1 ‘E:\A1’ 类似这样的代码
谢谢

使用道具

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

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

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

GMT+8, 2024-5-1 00:48