【发布时间】:2017-08-25 07:48:18
【问题描述】:
我想在不同的列中使用相同的条件来选择行。
set.seed(123)
df <- data.frame(col.x = sample(LETTERS[1:10], 20, replace = TRUE),
col.y = sample(LETTERS[1:10], 20, replace = TRUE),
val = rnorm(20))
我只需要在ValsToRetain 两列col.x、col.y 中包含值。
ValsToRetain <- c('A','D', 'F','H','J')
我已经尝试了这两种方法,它们给出了相同的预期输出。
df %>% filter(col.x %in% ValsToRetain) %>% filter(col.y %in% ValsToRetain)
df %>% filter(col.x %in% ValsToRetain & col.y %in% ValsToRetain)
# col.x col.y val
# 1 A H -1.6866933
# 2 F F 0.8377870
# 3 J J 0.4264642
# 4 F H 0.8781335
# 5 D D -0.3059627
但是,还有其他优雅的方法可以做到这一点吗?
例如;比如在这些列中计算rowSums 以检查它是否有nas。由于有多个值,我无法得到类似rowSums(df[,1:2] == 'A') 的想法。
【问题讨论】: