我有一张如下表:
X Y
a kite
b kiterunner
c skite
d sklite
e skiter
f runner
现在,我需要搜索风筝,我找到它的每一行,我需要添加一个带有“Yay”的Z列,否则为“Nay”。基本上以下是输出:
X Y Z
a kite Yay
b kiterunner Yay
c skite Yay
d sklite Nay
e skiter Yay
f runner Nay
我试过了grep
,但它搜索了所有“Yay”的整个列。我想我在这里遗漏了一些基本的东西,但无法弄明白......几乎24小时都没有睡觉。请帮忙。
我的代码现在:
Table$Z <- ifelse(grep("kite", Table$Y), "Yay", "Nay")
答案 0 :(得分:2)
您需要grepl
代替grep
:
Table$Z <- ifelse(grepl("kite", Table$Y), "Yay", "Nay")
结果:
> Table
X Y Z
1 a kite Yay
2 b kiterunner Yay
3 c skite Yay
4 d sklite Nay
5 e skiter Yay
6 f runner Nay
或建议lmo:
c("Yay", "Nay")[grepl("kite", Table$Y) + 1L]
答案 1 :(得分:1)
我们可以在没有任何ifelse
df1$Z <- with(df1, c("Nay", "Yay")[grepl("kite", Y)+1])
df1$Z
#[1] "Yay" "Yay" "Yay" "Nay" "Yay" "Nay"