R - 根据其他变量过滤特定变量

时间:2018-02-12 17:08:34

标签: r filter dplyr

我有一个问题,我想过滤我的变量Position(包含5个原子级别:Analyst,CEO,Analyst level II,Manger II,Ceo Level II)的年龄。

这意味着我想删除Analyst level II",#34; Ceo level II"," Manger level II"如果他们的年龄低于58岁,或者如果他们的年龄超过58岁就保留他们。其他原子水平(分析师,首席执行官)不应受年龄限制的影响。 (例如:分析师,年龄= 50应保留)

library(tidyverse)

Test<- tibble(Age=50:69,Position=rep(c("Analyst","Analyst Level II","Ceo level II", "Manager", "Manager level II"), times=4),Value=201:220) exam32 <-Test %>% filter(!Position==c("Analyst level II","Ceo level II","Manager level II"), Age>58) View(exam32)

希望你能帮忙

1 个答案:

答案 0 :(得分:1)

使用%in%匹配字符串,&指定应满足两个条件。

Test %>%
  filter(!(Position %in% c("Analyst level II",
                           "Ceo level II",
                           "Manager level II") & Age < 58)) 

# # A tibble: 17 x 3
#      Age Position         Value
#    <int> <chr>            <int>
#  1    50 Analyst            201
#  2    51 Analyst Level II   202
#  3    53 Manager            204
#  4    55 Analyst            206
#  5    56 Analyst Level II   207
#  6    58 Manager            209
#  7    59 Manager level II   210
#  8    60 Analyst            211
#  9    61 Analyst Level II   212
# 10    62 Ceo level II       213
# 11    63 Manager            214
# 12    64 Manager level II   215
# 13    65 Analyst            216
# 14    66 Analyst Level II   217
# 15    67 Ceo level II       218
# 16    68 Manager            219
# 17    69 Manager level II   220