我使用以下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中,而是在下面的答案中概述的代码行中。
答案 0 :(得分:0)
事实证明read.csv
上没有发生错误,但是当我尝试根据id字段中的值删除行时。
data <- data[!data$id == 'Delete-Row',]
如果data$id
为NULL
,则会返回NULL
行。