我有一个包含此类信息的数据框:
ID DESCRIPTION
1 aaabccdd
2 abcdFOOsajd
3 1243abcsd
4 abc123FOO
我想添加第三列,如果描述中包含"*FOO*"
,则会收到值1,以获得类似这样的内容:
ID DESCRIPTION TARGET
1 aaabccdd 0
2 abcdFOOsajd 1
3 1243abcsd 0
4 abc123FOO 1
我试过了:
df$TARGET <- ifelse(df$DESCRIPTION == grep("FOO", df$DESCRIPTION), "1", "0")
Error in `==.default`(df$DESCRIPTION, grep("FOO", df$DESCRIPTION)) :
longer object length is not a multiple of shorter object length
还有:
df$TARGET <- ifelse(grep("FOO", df$DESCRIPTION)==TRUE, "1", "0")
Error in `$<-.data.frame`(`*tmp*`, "TARGET", value = c("0", "0", "0", :
replacement has 826768 rows, data has 34035650
对此有何帮助?我在SO上看到了关于这个问题的其他问题,但是当if语句只是检查它是否完全等于某个东西或者数字大于另一个时,它们处于何种情况。
答案 0 :(得分:0)
'@Mas'
与grepl()
类似,但返回逻辑向量(正是您想要的)而不是指示索引的向量。因此,您可以这样做:
grep