2016-09-01 40 views
0

數據幀X包含從especific人口信息,說:如何從列表中提取索引值並將其替換爲另一個特定數據幀R?

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

而且我有三個列表我們的載體,像目錄dataframes這樣對我的作品:

列表1

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很大,而且這些變量是具有較高數目的因子。

+0

爲什麼不直接使用'match'重新填充您的列?只有3個匹配調用會在data.frame調用中完成。 –

+0

@ 42 - 顯示您的建議解決方案,因爲它似乎很明顯。 – Parfait

+1

@Pfafait當使用R代碼提供可複製的數據集時,我更可能回答問題;輸出首選或文本,我不需要編輯和解決由多餘的分隔符引起的故障。 –

回答

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 
相關問題