R 通过数据框匹配和替换列名

Pet*_*ung 5 r dataframe

我有两个数据框。我在数据框 NAME 中有一个列名列表。然后我有另一个数据框 DF,其中列名对应于下一列中的数据框 NAME。我需要将这些名称替换为 DF 中的列名称。

DF:
        A   B   C   D   E
 H001   947 95  10  10  678
 H002   647 40  10  10  806
 H003   840 20  99  53  21
 H004   105 10  97  12  44
 H005   595 59  76  76  67

NAME:
Name Real.name
A    Pete
B    May
C    Jon
D    Paul
E    Emma
F    Fuchs
G    George

Desired output:
        Pete May    Jon Paul Emma
 H001   947  95     10  10   678
 H002   647  40     10  10   806
 H003   840  20     99  53   21
 H004   105  10     97  12   44
 H005   595  59     76  76   67
Run Code Online (Sandbox Code Playgroud)

Mik*_* H. 11

这样的事情怎么样?

编辑:@PierreLafortune 建议的更好的选择:

names(df) <- name$Real.name[match(names(df), name$Name)]
Run Code Online (Sandbox Code Playgroud)

原来的做法:

names(df)<-merge(data.frame(Name=names(df)),name,all.x=T)[,"Real.name"]

df
     Pete May Jon Paul Emma
H001  947  95  10   10  678
H002  647  40  10   10  806
H003  840  20  99   53   21
H004  105  10  97   12   44
H005  595  59  76   76   67
Run Code Online (Sandbox Code Playgroud)

数据:

df <- structure(list(A = c(947L, 647L, 840L, 105L, 595L), B = c(95L, 
40L, 20L, 10L, 59L), C = c(10L, 10L, 99L, 97L, 76L), D = c(10L, 
10L, 53L, 12L, 76L), E = c(678L, 806L, 21L, 44L, 67L)), .Names = c("A", 
"B", "C", "D", "E"), class = "data.frame", row.names = c("H001", 
"H002", "H003", "H004", "H005"))

name <- structure(list(Name = structure(1:7, .Label = c("A", "B", "C", 
"D", "E", "F", "G"), class = "factor"), Real.name = structure(c(7L, 
5L, 4L, 6L, 1L, 2L, 3L), .Label = c("Emma", "Fuchs", "George", 
"Jon", "May", "Paul", "Pete"), class = "factor")), .Names = c("Name", 
"Real.name"), class = "data.frame", row.names = c(NA, -7L))
Run Code Online (Sandbox Code Playgroud)