突变功能中的GREP

时间:2018-06-25 23:18:03

标签: r

我正在尝试使用GREP重新分类数据集。我想添加一个新列,并根据另一个列中是否存在字符串来填充它:

wi.listings.Recode<-mutate(wi.listings, Check=ifelse(wi.listings$ListingDescription == grepl('Veranda', wi.listings$ListingDescription, ignore.case=TRUE), 'Veranda','Non Veranda'))

它返回所有'Non Veranda',因此ifelse函数无法正常工作。

2 个答案:

答案 0 :(得分:0)

grepl返回逻辑,然后将其与字符串(ListingDescription)进行比较;此比较将始终返回FALSE。只需使用grepl的结果即可:

wi.listings.Recode <- mutate(wi.listings, HasVeranda = ifelse(grepl("Veranda", ListingDescription, ignore.case = TRUE), "Veranda", "Non Veranda"))

此外,您可能有兴趣了解dplyr所使用的non-standard evaluation,这样您就不必从要突变的data.frame中显式引用列名。

答案 1 :(得分:0)

问题在于使用==grepl,因为grepl返回逻辑向量。我们不需要再次将原始列与逻辑向量进行比较。 grepl部分将进入test

ifelse参数中
mutate(wi.listings, Check = ifelse(grepl("Veranda", ListingDescription, 
              ignore.case = TRUE), "Veranda", "Non Veranda")))