可以同时使用"或"和"和"根据df中的列值选择行?

时间:2017-07-05 09:44:05

标签: r dataframe

我知道如何根据两列的值选择数据框中的行(使用此问题上接受的答案中的代码:Conditionally Remove Dataframe Rows with R

我的数据框看起来像这样(简化):

Date        Afd  Count
2012-03-23  12   0
2012-03-23  16   10
2012-03-23  17   12
2012-03-27  12   3
2012-03-27  16   9
2012-03-27  13   7
2012-03-27  22   5
2012-04-05  12   11
2012-04-05  23   8

现在我使用这段代码:

df <- df[!(df$Afd=="12" & df$Date=="2012-03-23"),]

但我也想放弃另一个Afd和另一个Date。遵循这个逻辑: 如果Afd = 12或16,日期= 2012-03-23或2012-03-27,则删除行。

我是否必须使用不同的组合重复此行4次,还是有更好的解决方案? (我怀疑后者)

1 个答案:

答案 0 :(得分:1)

您可以使用|添加或声明,也可以使用%in%

df <- subset(df, !(Afd %in% c("12", "16") & 
                   Date %in% as.Date(c("2012-03-23", "2012-03-27"))
                  )
            )