全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7703 4
2014-04-19
最近要分析FDA的MAUDE数据库,已知数据格式为txt,约有321万条观测,75个变量。数据库下载地址为http://www.accessdata.fda.gov/MAUDE/ftparea/mdrfoithru2013.zip (因为解压后的文件达1G,无法以附件形式提供)。下载页面(http://www.fda.gov/MedicalDevice ... vents/ucm127891.htm, “MDRFOI file contains following 75 fields, delimited by pipe (|), one record per line”此行以下)有对75个变量的简单描述,但不涉及格式(数值或字符、变量长度等)。变量间以“|”分隔。

使用如下语句导入:
复制代码
在导入过程中log中提示:
复制代码
非常非常多行类似的注意,以致log中都显示不了全部(首次出现提示的变量是Event Location,后面还有若干其他变量有相同提示)。最后会提示导入失败,但实际上库里有sas数据存在并可打开查看,观测数和下载页面说明的3216352相近,有十几条出入。

在对某些变量如Remedial Action进行分析时,发现了问题。按照下载页面说明,此变量值分为RC、RP、RL、RB、OT、NO、IN、PM、MA、*等几种,但统计出的频数表分类却不是这几种,说明读入的数据库值有误。

我自己猜测log中的提示是因为某些变量值过长,读入的时候被截断了。

搜索了论坛中相关的帖子,如https://bbs.pinggu.org/thread-1214883-1-1.html,提供解决方法为导入后利用log中的代码,修改informat 及format的长度。但在这里不太可行,因为不知道每个变量的长度究竟是多少。


后来查了sas base guideline,知道proc import有个选项guessingrows=,可以指定要扫描的观测行数,能避免长值被截断,不过SAS9.2里好像guessingrows选项最大值只能到32767(貌似9.3支持到2147483647,但现在我用的还是9.2)。


希望各位老师和同仁能指点一二,log的提示是否是因为长度的关系?有没有比较方便的解决方法?
二维码

扫码加我 拉你入群

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

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

全部回复
2014-4-25 09:39:19
回来汇报下结果。
最后我用ACCESS解决了。很让人吃惊的,先对本地的txt文件建了个链接表,过程类似于excel的文本向导,选择一下分隔符,设置一下变量格式就OK了(删除了其中一半没什么分析用途的变量)。然后将此链接表再另存为txt文件,用SAS读取就没问题了。

这期间,我也尝试过用R读取
复制代码
然后报错
复制代码
关键txt文件太大,记事本无法打开查看,不知是否原始数据就不规则。如果在read.table()中加上选项fill=TRUE,就会提示内存不够。虽然结果算是解决了,但是问题还在,而且不知道问题出现的原因。不知道是因为我描述得不清楚还是因为数据的关系,这个帖子一直没有回复。sigh...

二维码

扫码加我 拉你入群

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

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

2014-4-25 09:58:02
不知道guessingrows设大点会不会有用
二维码

扫码加我 拉你入群

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

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

2014-4-28 11:03:27
yiqiangz 发表于 2014-4-25 09:58
不知道guessingrows设大点会不会有用
后来装了SAS9.3,guessingrows甚至设到了3220000,也就是把所有观测都扫描一遍了,还是会报上述类似的警告
二维码

扫码加我 拉你入群

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

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

2020-8-15 10:10:29
yiqiangz 发表于 2014-4-25 09:58
不知道guessingrows设大点会不会有用
直接guessingrows = max;能避免过长报错。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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