簡體   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