R 删除除一列外所有列均为空的行

R 删除除一列外所有列均为空的行,r,R,使用以下代码: data <- rbind(c(1,1,2,3), c(1,1, NA, 4), c(1,4,6,7), c(1,NA, NA, NA), c(1,4, 8, NA)) 数据您可以这样做: filteredData <- data[!is.na(data[,2]) | !is.na(data[,4]),] > data [,1] [,2] [,3] [,4] [1

使用以下代码:

data <- rbind(c(1,1,2,3),
          c(1,1, NA, 4), 
          c(1,4,6,7), 
          c(1,NA, NA, NA), 
          c(1,4, 8, NA))

数据您可以这样做:

filteredData <- data[!is.na(data[,2]) | !is.na(data[,4]),]

> data
     [,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]    1    1   NA    4
[3,]    1    4    6    7
[4,]    1   NA   NA   NA
[5,]    1    4    8   NA

> filteredData
     [,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]    1    1   NA    4
[3,]    1    4    6    7
[4,]    1    4    8   NA
filteredData数据
[,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]1 NA 4
[3,]    1    4    6    7
[4,]1Na-NA-NA
[5,]1 4 8 NA
>过滤数据
[,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]1 NA 4
[3,]    1    4    6    7
[4,]1 4 8 NA

您可以这样做:

filteredData <- data[!is.na(data[,2]) | !is.na(data[,4]),]

> data
     [,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]    1    1   NA    4
[3,]    1    4    6    7
[4,]    1   NA   NA   NA
[5,]    1    4    8   NA

> filteredData
     [,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]    1    1   NA    4
[3,]    1    4    6    7
[4,]    1    4    8   NA
filteredData数据
[,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]1 NA 4
[3,]    1    4    6    7
[4,]1Na-NA-NA
[5,]1 4 8 NA
>过滤数据
[,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]1 NA 4
[3,]    1    4    6    7
[4,]1 4 8 NA

要删除列2-4中所有值均为NA的行,请执行以下操作:

data[apply(data[,2:4],1,function(x) !all(is.na(x))),]

     [,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]    1    1   NA    4
[3,]    1    4    6    7
[4,]    1    4    8   NA
要仅从检查为
NA
的列中排除第一列,可以使用负索引,如:

data[apply(data[,-1],1,function(x) !all(is.na(x))),]

要删除列2-4中所有值均为NA的行,请执行以下操作:

data[apply(data[,2:4],1,function(x) !all(is.na(x))),]

     [,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]    1    1   NA    4
[3,]    1    4    6    7
[4,]    1    4    8   NA
要仅从检查为
NA
的列中排除第一列,可以使用负索引,如:

data[apply(data[,-1],1,function(x) !all(is.na(x))),]
另一种方式:

 data[! rowSums(is.na(data[,2:4])) == 3, ]
如果它只是第2列和第4列,那么它将是:

data[! rowSums(is.na(data[,c(2,4)])) == 2, ]
另一种方式:

 data[! rowSums(is.na(data[,2:4])) == 3, ]
如果它只是第2列和第4列,那么它将是:

data[! rowSums(is.na(data[,c(2,4)])) == 2, ]

你能更详细地说明你的情况吗?要排除列2和列4均为NA或至少其中一个为NA或其他内容的行?另外,“2-4”是否表示“2,3,4”列?您能否更好地指定您的条件?要排除列2和列4均为NA或至少其中一个为NA或其他内容的行?此外,“2-4”是否表示“2,3,4”列?@LinaBird:请注意,此代码只考虑第2列和第4列,不包括第3列。正如我在评论中所问的,您应该更好地指定您的情况,因为它并不完全清楚…@LinaBird:请注意,此代码只考虑第2列和第4列,不包括第3列。正如我在评论中所问的,你应该更好地说明你的情况,因为它并不完全清楚。。。