Сопоставить вектор символов в кадре данных с другим вектором символов и символом усечения - PullRequest
0 голосов
/ 27 июня 2018

Вот данные и вектор.

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

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

Теперь для всех значений в var1, совпадающих со значениями в vec, оставьте только первые 3 символа в var1, так что желаемое решение:

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

Поскольку "abcd" соответствует, мы сохраняем только 3 символа, то есть "abc" в df2, но "efgh" не существует в vec, поэтому мы сохраняем его, как и "efgh" в df2.

Как я могу использовать dplyr и / или stringr для этого?

1 Ответ

0 голосов
/ 27 июня 2018

Вы можете просто использовать %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
...