我想使用单独的数据框对测试执行变异,如下所示:
library(tidyverse)
test <- tribble(
~col1, ~col2, ~col3,
"one", "a", "b",
"two", "b", "c",
"three", "c", "d"
)
mutator <- tribble(
~mutate_from, ~mutate_to,
"a", "X",
"b", "X"
)
期望输出:
> test
# A tibble: 3 x 3
col1 col2 col3
<chr> <chr> <chr>
1 one a X
2 two b X
3 three c d
我不知道该如何实现这一点:
test %>%
mutate(col3 = map(mutator, ~.x %>% ?))
最终目标可能是在变量器中进行 30 个左右的观察,所以我希望以某种方式实现这一点。
我不确定这是否足以满足您的目的,但您可以更新该列:
或者进行左连接:
或者使用
match()
获取匹配的行索引:如果您想跨多列执行此操作,那么您可以转换
mutator
为命名向量:为了补充 LMc 的答案,这里还有另外两种替代方案,将从中生成的命名向量提供给
mutator
任一dplyr::recode
(注意!!!
运算符)或者
plyr::revalue