我想在现有数据框中添加一列,用于标识该行中的元素是否包含特定模式。
我虽然使用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)
标记正确的字符串。
如果1
以Species
结束,sa
以0
结束,如果不是,则如何编写用{{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