如何从列表中提取索引值并将其替换为另一个特定数据框R?

时间:2016-09-01 21:04:15

标签: r dataframe

数据框 X 包含来自特定人群的信息,例如:

  EF ORG_PRES TYPE_CONT
 R01  FEDERAL      BASE
 AX1  OUTCOME      CLUE
 R02  FEDERAL      OPT1

我有三个列表,我们的矢量对我有用,就像这样的目录数据帧:

list1的

 Id_EF  EF
    35 R01
    36 AX1
    37 R02

list2中

 Id_TYPE_CONT TYPE_CONT
          101      OPT1
          201      BASE
          301      CLUE

项目list3

 Id_ORG_PRES ORG_PRES
        0034  FEDERAL
        0035  OUTCOME

我需要的是从数据框 X 中提取值,并从列表中替换它们各自的索引值。我期望的输出是一个看起来像这样的数据框:

 EF ORG_PRES TYPE_CONT
 35     0034       201
 36     0035       301
 37     0034       101

它不必是相同的 X 数据框。

我不想创建循环函数,但数据框 X 很大,变量是具有大量leves的因子。

1 个答案:

答案 0 :(得分:0)

OP - 将来,请让我们轻松复制粘贴您的样本数据,如上面的评论中所述。

解决您问题的一种方法是使用Reducemerge的组合:

out <- Reduce(function(x, y) {
  merge(x, y, all.x = TRUE)
}, list(list1, X, list2, list3))[, paste0("Id_", names(X))]
out
#   Id_EF Id_ORG_PRES Id_TYPE_CONT
# 1    35        0034          201
# 2    37        0034          101
# 3    36        0035          301