当使用read.csv时,为什么转换为<na>的整行是行中的第一个值<na> </na> </na>

时间:2013-12-15 05:55:58

标签: r csv import

我使用以下read.csv命令读取仅包含1,540行数据的csv数据文件。出于某种原因,如果一行中的第一个字段为空,则整个行将返回为NA,如下所示。

data =  read.csv(full_path, header = TRUE, sep = ",", strip.white = TRUE, 
                     fill = TRUE, na.strings = c('NA','','NULL','#N/A'), 
                     row.names = NULL, blank.lines.skip = TRUE)

该文件包含5个有用的字段,后跟我删除的365个字段。该文件的示例如下所示:

id,conm,No Data,Ticker,Cusip,,,,,,,,,,,
001010-01,ACF INDUSTRIES HOLDING CORP,TRUE,,00099V004^,,,,,,,,,,,
001040-01,AMF INC,TRUE,AMF,001688100^,,,,,,,,,,,
.
.
002444-01,BRUNSWICK CORP,TRUE,BC,117043109^,,,,,,,,,,,
,BURLINGTON INDUSTRIES INC,TRUE,121693972,121693972^,,,,,,,,,,,
002490-01,BURLINGTON NORTHERN INC.,TRUE,BNI,12189T104^,,,,,,,,,,,

因此,在上面的CSV示例中,公司'BURLINGTON INDUSTRIES INC'的数据会因为ID为空而丢失。

 id                                     conm ticker     cusip 
2 001010-01              ACF INDUSTRIES HOLDING CORP   <NA> 00099V004   
3 001040-01                                  AMF INC    AMF 001688100   
4 001045-01                              AMR CORP/DE  AAMRQ 001765106   
.
.
80   002444-01                                BRUNSWICK CORP     BC 117043109   
NA        <NA>                                          <NA>   <NA>      <NA> 
82   002490-01                      BURLINGTON NORTHERN INC.    BNI 12189T104 

我没有发现这种行为有记录,但这应该发生吗?还有其他字段为空,但不会发生此行为。我首先尝试了'row.names = NULL''blank.lines.skip = TRUE'并且效果相同。

如果我从文件中删除尾随365字段,则读取按预期工作。我检查了尾随行的字段数,每个字段包含相同的数字。

感谢您的帮助。

**更新**

我犯了一个错误,错误不在read.csv中,而是在下面的答案中概述的代码行中。

1 个答案:

答案 0 :(得分:0)

事实证明read.csv上没有发生错误,但是当我尝试根据id字段中的值删除行时。

data <- data[!data$id == 'Delete-Row',]

如果data$idNULL,则会返回NULL行。