我从较大的表中创建了一个较小的表。在这个较小的表中选择的列不是固定的,即用户可以在将来选择不同的集合。
两个表中的列名都基于sap定义
我有另一个文件,它将所有列名称映射为更简单的格式。
如果列表已修复,我可以使用重命名选项。由于列的列表未修复,因此重命名选项很繁琐。
我如何确保该用户获得正确的名称,无论他的选择如何?
较大的表格A =
a,b,c,d,e,f,g
1,2,3,4,5,6,7
8,9,10,11,12,13,14
较小的表格B =
a,b,c
1,2,3
8,9,10
名称映射表C =
Col1,Col2
a,name
b,age
c,height
d,weight
e,salary
f,firm
g,address
我希望我的程序能够参考映射表C&重命名B中的列名。在这种情况下的预期输出 -
name,age,height
1,2,3
8,9,10
如果将来用户选择列b,f& G。代码应该能够使用映射文件用正确的名称替换它。我希望它清楚
答案 0 :(得分:3)
我们可以使用match
(假设映射数据集('df3')的列是character
类
names(df2) <- df3$Col2[match(names(df2), df3$Col1)]
df2
# name age height
#1 1 2 3
#2 8 9 10
df1 <- structure(list(a = c(1L, 8L), b = c(2L, 9L), c = c(3L, 10L),
d = c(4L, 11L), e = c(5L, 12L), f = c(6L, 13L), g = c(7L,
14L)), .Names = c("a", "b", "c", "d", "e", "f", "g"),
class = "data.frame", row.names = c(NA,
-2L))
df2 <- structure(list(name = c(1L, 8L), age = c(2L, 9L),
height = c(3L,
10L)), .Names = c("name", "age", "height"), class = "data.frame",
row.names = c(NA, -2L))
df3 <- structure(list(Col1 = c("a", "b", "c", "d", "e", "f", "g"),
Col2 = c("name",
"age", "height", "weight", "salary", "firm", "address")),
.Names = c("Col1", "Col2"), class = "data.frame", row.names = c(NA,
-7L))