使用grepl从跨多列的文本中提取值 [英] Using grepl to extract a value from text across multiple columns

查看:0
本文介绍了使用grepl从跨多列的文本中提取值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据帧(Df),其中包含州和城市的2列数据。但是,有时两列中的数据会被调换或输入错误。数据帧将如下所示:

location          state
Bangkok
                  Bangkok Metropolitan
Central Thai      Bangkok 

我想创建一个新列"City",将这两个列中的"曼谷"提取到一个单独的列中。我可以通过如下方式为一个专栏这样做:

df$city <- ifelse(grepl("Bangkok",df$location),"Bangkok","")

但是,我希望一次至少搜索两列或更多列,类似于:

df$city <- ifelse(grepl("Bangkok",df$location||df$state),"Bangkok","")

这显然是行不通的。我认为plyr中的"Filter"执行类似的操作,但情况正好相反。

任何帮助我都很感激。谢谢!

推荐答案

您可以多次使用grepl。此外,您应该使用|而不是||

df1 <- data.frame(location=c("Bangkok", "",  "Central Thai", "someth"), 
                  state=c("", "Bangkok Metropolitan", "Bangkok", "youguess"),
                  stringsAsFactors = FALSE)


df1$city <- ifelse(grepl("Bangkok", df1$location) | grepl("Bangkok", df1$state),
                   "Bangkok","")
df1
#       location                state    city
# 1      Bangkok                      Bangkok
# 2              Bangkok Metropolitan Bangkok
# 3 Central Thai              Bangkok Bangkok
# 4       someth             youguess        

另见?"|"

对于|、&;和异或逻辑或原始向量。

for||,&;&;和isTRUE,长度为1的逻辑向量。

这篇关于使用grepl从跨多列的文本中提取值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆