gsub()在另一列上的整个列

时间:2015-06-26 18:48:43

标签: regex r dplyr

我有一个df:

^(.)\1+$

df <- data.frame( x=c("ABC Inc", "DCV", "FGZ", "JH7 j11"), y=c("ABC - fasjdlkjs", "DCV . (INC) .. kdhkfhksf", "FGZ / qiuwy72gs", "JH7 j11 dhd"), target=c("fasjdlkjs", "inc kdhkfhksf", "qiuwy gs", "dhd") ) x

的接近但不完全的子集

我希望gsub()yx""(空白)中的所有内容,同时删除数字/标点符号。

我想要的输出存储在y

我认为这会奏效,但事实并非如此:

target

编辑:

排序:df <- mutate(target = gsub(pattern=x, replacement="", y))

1 个答案:

答案 0 :(得分:3)

这(现在 - 感谢@Frank)转换案例tolower。下面,s通过将x字符串拆分为空格来构建要从x列进行测试的字符串

df$res <- mapply(function(a, b) {
    s <- paste(c(unlist(strsplit(as.character(a)," ")), "[[:punct:]]"), collapse="|")
    tolower(gsub("[[:digit:]]+", " ", gsub(s, "", b)))
  }, df$x, df$y)

df
#         x                        y        target              res
# 1 ABC Inc          ABC - fasjdlkjs     fasjdlkjs        fasjdlkjs
# 2     DCV DCV . (INC) .. kdhkfhksf inc kdhkfhksf   inc  kdhkfhksf
# 3     FGZ          FGZ / qiuwy72gs      qiuwy gs         qiuwy gs
# 4 JH7 j11              JH7 j11 dhd           dhd              dhd