我有一个数据框(df),其中包含州和城市的2列数据。但是,有时2列内的数据会被转置或输入错误。数据框看起来像这样:
location state
Bangkok
Bangkok Metropolitan
Central Thai Bangkok
我想创建一个新专栏," City"通过提取曼谷'从这两个进入一个单独的列。我可以通过以下方式为一列做到这一点:
df$city <- ifelse(grepl("Bangkok",df$location),"Bangkok","")
但是,我想一次搜索至少2个或更多列,例如:
df$city <- ifelse(grepl("Bangkok",df$location||df$state),"Bangkok","")
显然,这不起作用。 &#39;过滤器&#39;在普利尔,我认为做了类似但相反的事情。
任何帮助表示赞赏。谢谢!
答案 0 :(得分:2)
您也可以将列粘贴在一起
df$city <- ifelse(grepl("Bangkok", paste(df$location,df$state)),"Bangkok","")
答案 1 :(得分:1)
您可以多次使用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
另见?&#34; |&#34;
For |,&amp;和xor逻辑或原始向量。
对于||,&amp;&amp;和isTRUE,长度为一的逻辑向量。