我正在尝试使用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函数无法正常工作。
答案 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")))