0

对于这里有些缺乏可重复性,我提前道歉。我正在对一个非常大的(对我而言)数据集进行分析。它来自CMS Open Payments 数据库

我从该网站下载了四个文件,使用 . 读入 R readr,然后稍微操作以使它们更小(删除列),然后使用rbind. 我想将我的精简文件写入外部硬盘驱动器,这样我就不必每次想要处理它并进行配对时都读取所有数据。(显然,这都是脚本化的,但是这需要大约 45 分钟才能完成,所以如果可能的话,我想避免它。)

所以我写出数据并读入,但现在我得到了不同的结果。下面是我能找到的一个很好的例子。数据名为sa_all。表中有一个用于源的列。它只能取两个值:genres。它是作为分析的一部分实际添加的列,而不是数据中的列。

 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功能时,这些列似乎泄漏到列中。

4

0 回答 0