使用grepl从跨多列的文本中提取值 [英] Using grepl to extract a value from text across multiple columns
本文介绍了使用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屋!
查看全文