从R中的数据框中删除字符串

时间:2018-08-25 18:46:58

标签: r dataframe

我想从数据帧的第二列中删除带有字符串(完全匹配)的行:

输入:

   >data

      habitat       species
         wet species1_ind1
         wet species1_ind1
         dry species2_ind1
         dry species2_ind1
         dry species3_ind1
         dry species3_ind1
         ...

所需的输出(删除了包含物种2_ind1的行)

    >new_data

      habitat       species
         wet species1_ind1
         wet species1_ind1
         dry species3_ind1
         dry species3_ind1
         ...

理想情况下,我想提供要从数据框中删除的字符串列表。

1 个答案:

答案 0 :(得分:2)

您可以使用%in%

data[!(data$species %in% c("species2_ind1")), ]
  habitat       species
1     wet species1_ind1
2     wet species1_ind1
5     dry species3_ind1
6     dry species3_ind1

详细信息: 这是在选择species不在列表中的行。数据既有行又有列。当您指定data[x,y]时,x给出行,y给出列。 data[x, ]表示您已使用x指定了行,但使用了所有列。上面的表达式接受所有列,但将行指定为!(data$species %in% c("species2_ind1"))
data$species %in% c("species2_ind1"))给出了data $ species的值在列表中的那些行。但是这些都是我们要排除的,因此我们使用!来否定逻辑表达式,并获得data$species在列表中 not 的行。