R mutate & gsub 其中模式基于列

标签 r gsub dplyr rowwise

我正在尝试删除 pattern来自 var_1使用 mutate()gsub() .

作为gsub()只需要一个字符串,我必须使用 rowwise()mutate() 之前.否则它只会使用 pattern 中的第一条记录。专栏。

我想知道是否有任何其他方法可以在不使用 rowwise() 的情况下获得相同的结果。因为它大大减慢了这个过程。

test <- data.frame(
  var_1 = c('1AB', '2AB', '3C')
  ,pattern = c('AB','A','C')
)

test %>%
  dplyr::rowwise() %>%
  dplyr::mutate( result = sub(pattern, '', var_1)
          )

期望的结果:

# A tibble: 3 x 4
# Rowwise: 
  var_1 var_2 pattern result
  <chr> <lgl> <chr>   <chr> 
1 1AB   FALSE AB      1     
2 2AB   TRUE  A       2B    
3 3C    FALSE C       3 

最佳答案

您可以使用矢量化的 stringr 选项。

使用str_remove:

library(dplyr)
library(stringr)

test %>% mutate(result = str_remove(var_1, pattern))

#  var_1 pattern result
#1   1AB      AB      1
#2   2AB       A     2B
#3    3C       C      3

这与使用 str_replace 替换为 "" 相同。

test %>%  mutate(result = str_replace(var_1, pattern, ''))

关于R mutate & gsub 其中模式基于列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64984580/

相关文章:

r - 根据条件使用另一个值的值更新数据框中的整个列

linux - 如何用文件每一行中的字母替换某些数字(根据该行第 5 列和第 6 列中存在的字母)?

html - 一类 awk html 标签用 gsub 替换 "' ' >"with "''> "

r - 使用 group_by 过滤特定案例,同时保留 NA

r - 如何包装一个只接受单个元素的函数以使其接受一个列表

r - 将字符串的前两个字符移到字符串中的特定字符之后

r - 将数据框中的值与其他列中的另一个匹配项匹配

r - 解散 hexmap 多边形形状文件

r - strsplit 拆分取决于或取决于

r - 使用 R 和 cSplit() 将文本拆分为单词