对于这里有些缺乏可重复性,我提前道歉。我正在对一个非常大的(对我而言)数据集进行分析。它来自CMS Open Payments 数据库。
我从该网站下载了四个文件,使用 . 读入 R readr
,然后稍微操作以使它们更小(删除列),然后使用rbind
. 我想将我的精简文件写入外部硬盘驱动器,这样我就不必每次想要处理它并进行配对时都读取所有数据。(显然,这都是脚本化的,但是这需要大约 45 分钟才能完成,所以如果可能的话,我想避免它。)
所以我写出数据并读入,但现在我得到了不同的结果。下面是我能找到的一个很好的例子。数据名为sa_all
。表中有一个用于源的列。它只能取两个值:gen
或res
。它是作为分析的一部分实际添加的列,而不是数据中的列。
table(sa_all$src)
gen res
14837291 822559
所以我将数据框保存sa_all
到 CSV 文件中。
write.csv(sa_all, 'D:\\Open_Payments\\data\\written_files\\sa_all.csv',
row.names = FALSE)
然后我打开它:
sa_all2 <- read_csv('D:\\Open_Payments\\data\\written_files\\sa_all.csv')
table(sa_all2$src)
g gen res
1 14837289 822559
我确实收到了以下解析警告。
Warning: 4 parsing failures.
row col expected actual
5454739 pmt_nature embedded null
7849361 src delimiter or quote 2
7849361 src embedded null
7849361 NA 28 columns 54 columns
由于我手动添加了该src
列并且它只能采用两个值,因此我看不出这会如何导致任何解析错误。
有没有人在使用时遇到过类似的问题readr
?谢谢你。
只是为了跟进评论:
write_csv(sa_all, 'D:\\Open_Payments\\data\\written_files\\sa_all.csv')
sa_all2a <- read_csv('D:\\Open_Payments\\data\\written_files\\sa_all.csv')
Warning: 83 parsing failures.
row col expected actual
1535657 drug2 embedded null
1535657 NA 28 columns 25 columns
1535748 drug1 embedded null
1535748 year an integer No
1535748 NA 28 columns 27 columns
甚至更多的解析错误,看起来有些列完全被打乱了:
table(sa_all2a$src)
100000000278 Allergan Inc. gen GlaxoSmithKline, LLC.
1 1 14837267 1
No res
1 822559
src
有制造商名称的列,当我使用该write_csv
功能时,这些列似乎泄漏到列中。