如何基于R中的多个条件过滤出行

时间:2020-04-28 09:17:43

标签: r

使用基数R我想根据不同的条件过滤掉行。 第一个示例是一个非常简单的示例,但我似乎缺少了一些东西。我想将所有行过滤到包含值“ A”和“ C”的新DF中。要仅根据一个条件“ A”过滤掉,我将使用代码:

for loop

这很好。但是要想两者兼而有之,我似乎无法使代码正常工作。我尝试过:

DF2 <- DF1 [DF1$letters == "A",]

它不起作用。

第二种情况稍微复杂一些。在这种情况下,我想从“字母”列中过滤出包含“ A”和“ C”的所有行,并从“数字”列中包含“ 2”的所有行

DF2 <- DF1 [DF1$letters == "A" & "B" ,]

最后得到一个新的DF

"Letters"   "Numbers"  "ID"
    A           10      A1
    B           2       B1
    C           15      A2
    D           7       A3
    E           32      B2

谢谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我认为在您的描述中,您正在寻找由"OR"插入的"AND"

subset(df, Letters %in% c('A', 'C') | Numbers == 2)

#  Letters Numbers ID
#1       A      10 A1
#2       B       2 B1
#3       C      15 A2

答案 1 :(得分:0)

我们可以使用filter

library(dplyr)
df %>%
      filter( Letters %in% c('A', 'C') | Numbers == 2)