将数据框中的字符向量与另一个字符向量匹配并修剪字符

时间:2018-06-27 02:13:51

标签: r dplyr tidyverse stringr

这是一个数据框和一个向量。

df1  <-  tibble(var1 = c("abcd", "efgh", "ijkl", "qrst"))

vec <-  c("abcd", "mnop", "ijkl")

现在,对于var1中与vec中的值匹配的所有值,在var1中仅保留前3个字符,以便所需的解决方案是:

df2 <- tibble(var1 = c("abc", "efgh", "ijk", "qrst"))

由于匹配“ abcd”,因此在df2中仅保留3个字符,即“ abc”,而在vec中不存在“ efgh”,因此在df2中将其保留为即“ efgh”。

如何使用dplyr和/或stringr完成此操作?

1 个答案:

答案 0 :(得分:4)

您可以只使用%in%来检查字符串是否在向量中,而使用substr来修剪向量:

df1 %>% 
    mutate(var1 = ifelse(var1 %in% vec, substr(var1, 1, 3), var1))

# A tibble: 4 x 1
#  var1 
#  <chr>
#1 abc  
#2 efgh 
#3 ijk  
#4 qrst