Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.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 删除所有列中没有值的行_R - Fatal编程技术网

R 删除所有列中没有值的行

R 删除所有列中没有值的行,r,R,我已经浏览了大多数评论,如果我不知道所有列的哪一行都是NA,我就找不到任何一个可以帮助我的评论 比如说,我有一个数据看起来像这样 df<- structure(list(COl1 = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", &q

我已经浏览了大多数评论,如果我不知道所有列的哪一行都是NA,我就找不到任何一个可以帮助我的评论

比如说,我有一个数据看起来像这样

df<- structure(list(COl1 = c("A", "B", "C", "D", "E", "F", "G", "H", 
"I", "J", "K", "L", "M"), COl2 = c(0L, NA, NA, NA, NA, 3L, 34L, 
4L, 56L, 6L, NA, NA, NA), COl3 = c(NA, 2L, NA, NA, NA, 1L, 924L, 
NA, 8373L, NA, NA, NA, NA), COl4 = c(NA, 2L, NA, NA, NA, 2L, 
NA, NA, 9292L, NA, NA, NA, NA), COl5 = c(NA, 2L, NA, 1L, NA, 
3L, NA, NA, 9282L, NA, NA, NA, NA), COl6 = c(NA, 2L, NA, 2L, 
NA, 2L, NA, NA, 1L, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA, 
-13L))
   COl1 COl2 COl3 COl4 COl5 COl6
     A    0   NA   NA   NA   NA
     B   NA    2    2    2    2
     C   NA   NA   NA   NA   NA
     D   NA   NA   NA    1    2
     E   NA   NA   NA   NA   NA
     F    3    1    2    3    2
     G   34  924   NA   NA   NA
     H    4   NA   NA   NA   NA
     I   56 8373 9292 9282    1
     J    6   NA   NA   NA   NA
     K   NA   NA   NA   NA   NA
     L   NA   NA   NA   NA   NA
     M   NA   NA   NA   NA   NA
COl1    COl2    COl3    COl4    COl5    COl6
A        0       NA      NA      NA     NA
B        NA      2        2      2       2
D        NA      NA      NA      1       2
F        3       1        2      3       2
G        34     924      NA     NA      NA
H        4       NA      NA     NA      NA
I        56     8373    9292    9282    1
J        6       NA     NA      NA      NA
我想删除那些只有NA的行,但保留那些仍然至少有1个值的行

因此,输出将如下所示

df<- structure(list(COl1 = c("A", "B", "C", "D", "E", "F", "G", "H", 
"I", "J", "K", "L", "M"), COl2 = c(0L, NA, NA, NA, NA, 3L, 34L, 
4L, 56L, 6L, NA, NA, NA), COl3 = c(NA, 2L, NA, NA, NA, 1L, 924L, 
NA, 8373L, NA, NA, NA, NA), COl4 = c(NA, 2L, NA, NA, NA, 2L, 
NA, NA, 9292L, NA, NA, NA, NA), COl5 = c(NA, 2L, NA, 1L, NA, 
3L, NA, NA, 9282L, NA, NA, NA, NA), COl6 = c(NA, 2L, NA, 2L, 
NA, 2L, NA, NA, 1L, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA, 
-13L))
   COl1 COl2 COl3 COl4 COl5 COl6
     A    0   NA   NA   NA   NA
     B   NA    2    2    2    2
     C   NA   NA   NA   NA   NA
     D   NA   NA   NA    1    2
     E   NA   NA   NA   NA   NA
     F    3    1    2    3    2
     G   34  924   NA   NA   NA
     H    4   NA   NA   NA   NA
     I   56 8373 9292 9282    1
     J    6   NA   NA   NA   NA
     K   NA   NA   NA   NA   NA
     L   NA   NA   NA   NA   NA
     M   NA   NA   NA   NA   NA
COl1    COl2    COl3    COl4    COl5    COl6
A        0       NA      NA      NA     NA
B        NA      2        2      2       2
D        NA      NA      NA      1       2
F        3       1        2      3       2
G        34     924      NA     NA      NA
H        4       NA      NA     NA      NA
I        56     8373    9292    9282    1
J        6       NA     NA      NA      NA

一个选项是逻辑矩阵上的
base R
rowSums

df[rowSums(!is.na(df[-1]))> 0,]
-输出

#    COl1 COl2 COl3 COl4 COl5 COl6
#1     A    0   NA   NA   NA   NA
#2     B   NA    2    2    2    2
#4     D   NA   NA   NA    1    2
#6     F    3    1    2    3    2
#7     G   34  924   NA   NA   NA
#8     H    4   NA   NA   NA   NA
#9     I   56 8373 9292 9282    1
#10    J    6   NA   NA   NA   NA

或者使用
Reduce

subset(df, Reduce(`|`, lapply(df[-1], Negate(is.na))))

或者从
dplyr

library(dplyr)
df %>%
    filter_at(vars(-COl1), any_vars(!is.na(.)))

使用
dplyr
new
cross
功能

library(dplyr)
df %>% filter(Reduce(`|`, across(COl2:COl6, ~!is.na(.))))

#  COl1 COl2 COl3 COl4 COl5 COl6
#1    A    0   NA   NA   NA   NA
#2    B   NA    2    2    2    2
#3    D   NA   NA   NA    1    2
#4    F    3    1    2    3    2
#5    G   34  924   NA   NA   NA
#6    H    4   NA   NA   NA   NA
#7    I   56 8373 9292 9282    1
#8    J    6   NA   NA   NA   NA