我有两个数据框。我在数据框 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)