首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于grepl的ifelse语句

基于grepl的ifelse语句
EN

Stack Overflow用户
提问于 2016-01-13 12:10:45
回答 1查看 2.8K关注 0票数 1

我有以下数据:

代码语言:javascript
复制
address <- c("Weg", "Laan", "Molenweg")
b <- seq(1:3)
df <- data.frame(address, b)

我现在想做的是,我看到地址是否包含某个单词,然后给列贴上标签。就像这样:

代码语言:javascript
复制
df_weg <- df$address
x <- c("weg")
df$test <- ifelse(grepl(x, df_weg), 1, 0)

这很好,但当单词在列表中时,我正在寻找一种将项目标签为0/1的方法。所以它应该是这样的:

代码语言:javascript
复制
x <- c("weg", "laan")
df$test <- ifelse(grepl(x, df_weg), 1, 0)

但是,当我尝试这样做时,我会得到以下错误:

代码语言:javascript
复制
Warning message:
In grepl(x, df_weg) :
argument 'pattern' has length > 1 and only the first element will be used

有什么想法可以让我这样做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-13 12:16:21

您可以尝试以下表达式:

代码语言:javascript
复制
x <- "weg|laan" # or paste(c("weg", "laan"), collapse="|")
df$test <- ifelse(grepl(x, df_weg), 1, 0)

|regex中的意思是“或”

作为一种更直接的方法,由于@DavidArenburg需要0/1的输出,所以您只需将grepl的逻辑结果转换为整数:

代码语言:javascript
复制
as.integer(grepl("weg|laan", df_weg))

或者,如果你想做合作(但不太好的实践):

代码语言:javascript
复制
+grepl("weg|laan", df_weg)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34766384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档