【问题标题】:Delete Part of String in One Column if Part of String Exists in Another Column [duplicate]如果字符串的一部分存在于另一列中,则删除一列中的部分字符串[重复]
【发布时间】:2019-09-12 02:46:26
【问题描述】:

我有一列应该只是街道地址。我有另一列包含城市、州和邮编。有时街道地址列还包含城市、州和邮政编码。如果是这种情况,我想从街道地址栏中删除城市、州和邮政编码。

数据框示例:

我希望代码检查每一行,如果 CityStateZip 列中的字符串存在于 StreetAdd 列中的字符串中,则删除 StreetAdd 列中的那部分字符串。

我想看的:

这是我尝试过的:

data$StreetAdd <- gsub(data$CityStateZip, '', data$StreetAdd)

这是我得到的警告:

警告消息:在 gsub(data$CityStateZip, "", data$StreetAdd) 中:
参数“模式”的长度 > 1,只有第一个元素是 用过

我的数据框中似乎没有任何变化

【问题讨论】:

  • 抱歉图片链接。我无法弄清楚如何将图像直接放在帖子中
  • 建议使用dput 来共享数据,而不是图像,以便人们可以将其直接复制粘贴到他们的控制台中。阅读how to ask a good question 以及如何提供reproducible example
  • 这也不行:
  • 我试过了:str_replace(data$StreetAdd, datat$CityStateZip, "")

标签: r


【解决方案1】:

它不漂亮,但它有效:

library(dplyr)

street <- c("1234 Main St","5678 Park Pl Detroit MI 55555")
citystate <- c("Buffalo NY 14210", "Detroit MI 55555")
data <- tibble(street, citystate)

for(i in 1:length(data$street)){
  data$street[i] <- gsub(data$citystate[i], '', data$street[i])
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2021-09-04
    • 2014-07-24
    • 2021-07-11
    • 2012-03-31
    相关资源
    最近更新 更多