【发布时间】:2019-12-29 16:32:04
【问题描述】:
我想在 data.frame 中添加一个新列,以指示对于每一行,数字“2”是否出现在某些其他列中。这是一个适用于小型 data.frame 的简单版本:
df <- data.frame(mycol.1 = 1:5, mycol.2= 5:1, other.col = -2:2)
df$mycols.contain.two <- df$mycol.1 ==2 | df$mycol.2 ==2
df
mycol.1 mycol.2 other.col mycols.contain.two
1 1 5 -2 FALSE
2 2 4 -1 TRUE
3 3 3 0 FALSE
4 4 2 1 TRUE
5 5 1 2 FALSE
现在假设 data.frame 有 50 列,我希望新列指示是否有任何以“mycol”开头的列在每行中包含“2”,而不必使用“|”符号 49 次。我假设使用starts_with() 有一个优雅的 dplyr 答案,但我无法弄清楚语法。
【问题讨论】:
-
df$new_col = rowSums(df[, 1:2] == 2) > 0您可以使用grep()通过名称搜索仅选择某些列。 -
如果您添加reproducible example,将更容易帮助/查找已在 SO 上的相关帖子