R 如果模式的值为真,则更新字段

R 如果模式的值为真,则更新字段,r,street-address,R,Street Address,这是我的第一个问题,请原谅我的错误。 我有一个数据帧,其中地址在一行中,有许多缺少的值和几个错误 地址 都柏林Clontarf公司布雷默大道 邓德拉姆草地大道 马里诺菲利普斯堡大道 海岸桃金娘广场 我想添加一个新字段“District”,如果地址的值包含某些值,例如,如果它包含Marino、Fairview或Clontarf,那么District应该是Dublin 3 Dublin3 <- c("Marino", "Fairview", "Clontarf") matches <

这是我的第一个问题,请原谅我的错误。 我有一个数据帧,其中地址在一行中,有许多缺少的值和几个错误

地址

  • 都柏林Clontarf公司布雷默大道
  • 邓德拉姆草地大道
  • 马里诺菲利普斯堡大道
  • 海岸桃金娘广场
我想添加一个新字段“District”,如果地址的值包含某些值,例如,如果它包含Marino、Fairview或Clontarf,那么District应该是Dublin 3

Dublin3 <- c("Marino", "Fairview", "Clontarf")
matches <- unique (grep(paste(Dublin3,collapse="|"), 
DubPPReg$Address, value=TRUE))
都柏林3 看起来像这样

df
[1] "Braemor Drive, Churchtown, Co.Dublin"
[2] "Meadow Avenue, Clontarf, Dublin 14"  
[3] "Sallymount Avenue, Ranelagh"         
[4] "Philipsburgh Avenue, Marino"
match <- ifelse(grepl("Marino|Fairview|Clontarf", df, ignore.case = T), "Dublin 3",FALSE)
你可以像这样使用
grepl
找到你的马赫数

df
[1] "Braemor Drive, Churchtown, Co.Dublin"
[2] "Meadow Avenue, Clontarf, Dublin 14"  
[3] "Sallymount Avenue, Ranelagh"         
[4] "Philipsburgh Avenue, Marino"
match <- ifelse(grepl("Marino|Fairview|Clontarf", df, ignore.case = T), "Dublin 3",FALSE)

这意味着您正在寻找的一个或所有匹配名称(即Marino、Fairview或Clontarf)位于
df

的第二行和第四行,非常感谢Miha。当我尝试时,您的代码示例非常有效,但我无法使它在我的示例中工作。如果我有一个完全匹配的完整地址“菲利普堡大道,马里诺,都柏林3”,它的工作。但不是针对文本中的一个单词。在vector
Dublin3
中定义/插入该单词,然后再次运行代码。当我在数据框(df)中尝试Dublin3时,没有
Avenue
,但有
Meadow Avenue
。因此,如果您还想将
Avenue
与都柏林3号进行匹配,您需要将其插入
Adress
列中。嗨,米哈,我想我们在这里讨论的目的是相互矛盾的,我应该给出完整的代码示例。数据帧由这种格式的地址组成。df
[1] "FALSE"    "Dublin 3" "FALSE"    "Dublin 3"