繁体   English   中英

如何删除带有特定行中不适用的dplyr的列?

[英]How to remove columns with dplyr with NA in specific row?

此代码删除包含至少一个NA的所有列。

library(dplyr)
df %>%
    select_if(~ !any(is.na(.)))

如果我只想删除第八行具有NA(对于下面的生成数据)的列,我需要修改什么?

set.seed(1234)
df <- data.frame(A = 1:10, B = 11:20, C = 21:30)
df <- as.data.frame(lapply(df, function(cc) cc[ sample(c(TRUE, NA), prob = c(0.85, 0.15), size = length(cc), replace = TRUE) ]))

base-R您可以简单地尝试:

df[,which(!is.na(df[8,]))]

@RichScriven建议:

df[, !is.na(df[8,])]

#    A  B
# 1   1 11
# 2   2 12
# 3   3 13
# 4   4 NA
# 5  NA 15
# 6   6 16
# 7   7 17
# 8   8 18
# 9   9 19
# 10 10 20

您可以这样做:

df %>% 
  select_if(!is.na(.[8,]))

    A  B
1   1 11
2   2 12
3   3 13
4   4 NA
5  NA 15
6   6 16
7   7 17
8   8 18
9   9 19
10 10 20

另一种选择是keep

library(purrr)
keep(df, ~ !(is.na(.x[8])))
#    A  B
#1   1 11
#2   2 12
#3   3 13
#4   4 NA
#5  NA 15
#6   6 16
#7   7 17
#8   8 18
#9   9 19
#10 10 20

或使用base R Filter

Filter(function(x) !(is.na(x[8])), df)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM