Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从Excel中创建的csv文件中删除空行_R_Excel_Csv_Dataframe - Fatal编程技术网

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

R 从Excel中创建的csv文件中删除空行,r,excel,csv,dataframe,R,Excel,Csv,Dataframe,我有一个从excel csv导入的数据框。到目前为止,这是可行的,但是csv总是保存49'999行,即使只有大约10000行数据。其余的行都是空的 我现在如何仅选择包含至少一列数据的数据框部分?我用一行就做到了: MyDF[length(MyDF[MyDF!=""])>0] 但是我如何才能为整个数据帧做到这一点呢?我想把那个“子数据帧”分配给一个新的数据帧 编辑示例数据: 非常简单的例子: data<-matrix(c(1,2,1,NA,NA,NA),nrow=3,ncol=2,

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

我现在如何仅选择包含至少一列数据的数据框部分?我用一行就做到了:

 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,]

数据在读取Excel中创建的此类数据时,您必须注意
NA
,这取决于列是被R识别为数字还是字符/因子。或者,您可以在读取数据时添加选项
NA.strings=c(“NA”,”)
,所以所有的空格都是NA,您不需要关心

!apply(is.na(data)| data==“”,1,all)
inside将为至少包含一列数据的行提供TRUE。因为其余的都是假的,所以他们没有被带走


此外,在从Excel创建csv文件时,您可以尝试删除数据右侧的所有列,因为它还可以人工创建重影数据列。这也可以删除底部的空白行。 complete Case不只是查找已完成的行吗?但我不希望这样,因为有些列比其他列完成得早。我想要至少且仅限于以下位置的行!一列包含数据。一旦不再有列包含数据,文件就完成了。您好,谢谢您的全面回复。不知何故,它根本就没有将其子集化。我不知道为什么,即使这些行是完全空的(和所有字符),我也尝试过使用您的建议na.strings=c(“na”),然后使用这个:data20,],但仍然没有创建子集。您可以添加一个数据示例吗?您可以选择10行“好”行和10行“坏”行,然后粘贴dput(DF)的结果。看到sum(!is.na(data))>0的结果,您将自己回答。我仍然不明白为什么我的答案不适用于您,它适用于您的示例。很抱歉我犯了一个错误,您的函数运行良好:-)谢谢您的努力!
newdata = data[!apply(is.na(data) | data == "", 1, all), ]