【发布时间】:2019-03-12 12:23:54
【问题描述】:
我有一个带有字符变量的数据框 df 以及 fromvec 和 tovec。
df <- tibble(var = c("A", "B", "C", "a", "E", "D", "b"))
fromvec <- c("A", "B", "C")
tovec <- c("X", "Y", "Z")
在fromvec中使用字符串,在df中检查,然后用tovec中对应的字符串替换,这样df中的“A”被替换为“X”,“B”被替换为“Y”,依此类推,得到desired_df .
desired_df <- tibble(var = c("X", "Y", "Z", "X", "E", "D", "Y"))
我尝试了关注,但没有得到想要的结果!
from_vec <- paste(fromvec, collapse="|")
to_vec <- paste(tovec, collapse="|")
undesired_df <- df %>%
mutate(var = str_replace(str_to_upper(var), from_vec, to_vec))
即这个
tibble(var = c("X|Y|Z", "X|Y|Z", "X|Y|Z", "X|Y|Z", "E", "D", "X|Y|Z"))
我怎样才能得到所需的_df?
【问题讨论】:
-
你得到了什么结果?
-
我得到了这个 tibble(var = c("X|Y|Z", "X|Y|Z", "X|Y|Z", "X|Y|Z", “E”、“D”、“X|Y|Z”))
-
用
tovec中的变量替换fromvec中的变量将产生X, Y, Z, a E D b的结果,除非您指定您希望结果不区分大小写。如果是这种情况(正如大多数贡献者所假设的那样),请说明。