Replace/Vlookup R 中的类型函数

Replace/Vlookup type function in R

我很好奇 R 中是否有一个函数可以完成从另一个数据集中查找相应值并根据该查找替换几列数据的任务 table。

数据将如下所示:

ID value_1  value_2  value_3
----------------------------
1  A         -         B
2  A         C         A
3  C         A         C
4  -         -         -

查找 table 将如下所示:

letters  amount
---------------
   A      5
   B      6
   C      20

预期的输出应如下所示:

ID value_1  value_2  value_3
----------------------------
1  5         -         6
2  5         20        5
3  20        5         20
4  -         -         -

你可以试试match

df1[-1] <- `dim<-`(df2$amount[match(as.matrix(df1[-1]),
                                  df2$letters)], c(4,3))

df1[is.na(df1)] <- '-' 
#wouldn't recommend to replace `NA` as it will convert to `character` class
df1
#  ID value_1 value_2 value_3
#1  1       5       -       6
#2  2       5      20       5
#3  3      20       5      20
#4  4       -       -       -

或者使用 mutate_each 来自 dplyr

的选项
library(dplyr)
df1 %>% 
    mutate_each(funs(df2$amount[match(., df2$letters)]), -ID)
#    ID value_1 value_2 value_3
#1  1       5      NA       6
#2  2       5      20       5
#3  3      20       5      20
#4  4      NA      NA      NA