【问题标题】:How to extract the indexes values from a list and replace them in another specific data frame R?如何从列表中提取索引值并将它们替换为另一个特定的数据框 R?
【发布时间】:2016-09-01 21:04:14
【问题描述】:

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

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

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

列表1

 Id_EF  EF
    35 R01
    36 AX1
    37 R02

列表2

 Id_TYPE_CONT TYPE_CONT
          101      OPT1
          201      BASE
          301      CLUE

列表3

 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很大,而且变量是具有高水平数的因素。

【问题讨论】:

  • 为什么不直接使用match 重新填充您的列?只需 3 个匹配调用就可以在 data.frame 调用中完成。
  • @42 - 向 OP 展示您提出的解决方案,因为这对您来说似乎很明显。
  • @Parfait 当使用 R 代码提供可重现的数据集时,我更有可能回答问题; dput 输出首选或我不需要编辑和解决由多余分隔符引起的故障的文本。

标签: r dataframe


【解决方案1】:

OP -- 今后,请方便我们复制粘贴您的示例数据,如上述 cmets 中所述。

解决问题的一种方法是结合使用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

【讨论】:

    猜你喜欢
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 2021-11-19
    • 2019-02-15
    • 2020-07-23
    • 1970-01-01
    • 2019-03-23
    相关资源
    最近更新 更多