添加基于来自另一列的grep的值的列 - R.

时间:2017-03-06 21:11:04

标签: r if-statement dataframe

我有一个包含此类信息的数据框:

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语句只是检查它是否完全等于某个东西或者数字大于另一个时,它们处于何种情况。

1 个答案:

答案 0 :(得分:0)

'@Mas'grepl()类似,但返回逻辑向量(正是您想要的)而不是指示索引的向量。因此,您可以这样做:

grep