【发布时间】:2018-08-28 17:12:12
【问题描述】:
我有一个宽格式的参与者问卷回复数据框,每一列代表一个特定的问题/项目。
数据框看起来像这样:
id <- c(1, 2, 3, 4)
Q1 <- c(NA, NA, NA, NA)
Q2 <- c(1, "", 4, 5)
Q3 <- c(NA, 2, 3, 4)
Q4 <- c("", "", 2, 2)
Q5 <- c("", "", "", "")
df <- data.frame(id, Q1, Q2, Q3, Q4, Q5)
我希望 R 删除每行中包含 (1) NA 或 (2) 空白的所有值的列。因此,我不想要 Q1 列(完全由 NA 组成)和 Q5 列(完全由“”形式的空白组成)。
根据thread,我可以使用以下内容删除完全由 NA 组成的列:
df[, !apply(is.na(df), 2, all]
但是,该解决方案无法处理空格 ("")。当我在 dplyr 管道中执行所有这些操作时,有人还可以解释我如何将上述代码合并到 dplyr 管道中吗?
此时,我的 dplyr 管道如下所示:
df <- df %>%
select(relevant columns that I need)
之后,我被困在这里并使用方括号 [] 对非 NA 列进行子集化。
谢谢!非常感谢。
【问题讨论】:
-
你的 dplyr 管道现在是什么样子的?
-
我已经更新了我的帖子,以反映我的 dplyr 管道现在的样子。