我是R的新手。使用dplyr和filter,我想选择一个变量列表的记录!= NA。
df %>% filter (var1 != "NA" | var2 != "NA" | var3 != "NA" )
问题是我有85个这样的变量(以HR结尾)。所以我已经提取它们并将它们放在一个载体中。
hr_variables <- grep("HR$", names(ssc), value=TRUE)
我想创建一个循环,通过将OR条件应用于每个元素来获取hr_variable然后filter()。 这可能在R?
答案 0 :(得分:1)
我们可以使用base R
更轻松地执行此操作
ssc[!rowSums(is.na(ssc[hr_variables])),]
# col1_HR col2_HR col3
#2 1 3 0.5365853
#3 2 4 0.4196231
或使用tidyverse
library(tidyverse)
ssc %>%
select_(.dots = hr_variables) %>%
map(~is.na(.)) %>%
reduce(`|`) %>%
`!` %>%
extract(ssc, .,)
或complete.cases
ssc %>%
select_(.dots = hr_variables) %>%
complete.cases(.) %>%
extract(ssc, ., )
set.seed(24)
ssc <- data.frame(col1_HR = c(NA, 1, 2, 3), col2_HR = c(NA, 3, 4, NA), col3 = rnorm(4))