我提前道歉,因为这里的再现性有些不足。我正在对一个非常大的(对我来说)数据集进行分析。它来自CMS Open Payments database。
我从该网站下载了四个文件,使用readr
读入R,然后稍微操作以使它们变小(删除列),然后使用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
列中。