将列添加到数据框,如果字符串匹配某个模式,则返回1

时间:2014-07-11 13:27:32

标签: r string dataframe match

我想在现有数据框中添加一列,用于标识该行中的元素是否包含特定模式。

我虽然使用transform()函数来执行此操作。使用iris数据集

> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

> tail(iris)
    Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
145          6.7         3.3          5.7         2.5 virginica
146          6.7         3.0          5.2         2.3 virginica
147          6.3         2.5          5.0         1.9 virginica
148          6.5         3.0          5.2         2.0 virginica
149          6.2         3.4          5.4         2.3 virginica
150          5.9         3.0          5.1         1.8 virginica

我想添加一个列,用于标识Species是否以字符串sa结尾。在regex中,我可以使用表达式.*(sa)标记正确的字符串。

如果1Species结束,sa0结束,如果不是,则如何编写用{{1}}填充列的函数?

1 个答案:

答案 0 :(得分:3)

怎么样

iris$check <- as.numeric(grepl(".*(sa)", iris$Species))

grepl返回一个逻辑向量(TRUE / FALSE),可以使用as.numeric轻松转换为1/0。

也可能:

iris$check <- grepl(".*(sa)", iris$Species) + 0L