从Excel中创建的csv文件中删除空行

时间:2014-01-15 08:30:05

标签: r excel csv dataframe

我有一个从excel csv导入的数据帧。到目前为止这是有效的,但是csv总是保存49'999行,即使只有大约10'000行数据。其余的行都是空的。

如何现在只选择包含至少一列数据的数据框的那一部分?我设法做了一行:

 MyDF[length(MyDF[MyDF!=""])>0]

但是我怎样才能为整个数据帧做到这一点?我想将“子数据帧”分配给新的数据帧。

编辑示例数据:

很简单的例子:

data<-matrix(c(1,2,1,NA,NA,NA),nrow=3,ncol=2,byrow=TRUE)
     [,1] [,2]
[1,]    1    2
[2,]    1   NA
[3,]   NA   NA

data2<-data[sum(!is.na(test))>0,]

没有子集......但是为什么?

1 个答案:

答案 0 :(得分:2)

当读取在Excel中创建的此类数据时,您必须处理NA"",具体取决于列是被识别为数字还是被R识别为字符/因子。或者,您可以在阅读数据时添加选项na.strings = c("NA", ""),因此所有空白都将为NA,您无需关注""

newdata = data[!apply(is.na(data) | data == "", 1, all), ]

对于至少有一列包含数据的行,!apply(is.na(data) | data == "", 1, all)内部将为TRUE。其余的都是假的,所以不会被带走。

此外,从Excel创建csv文件时,您可以尝试删除数据右侧的所有列,因为它还可以人为地创建ghost数据列。这也可以删除底部的空白行。