R通过使用第三张表重命名列

时间:2018-08-15 15:53:25

标签: r foreign-keys multiple-columns rename

我的问题: Ive有3张桌子:2张带Obs。和变量。 这两个表的变量名称不同,但描述的是同一件事。因此,我想在一个表中重命名变量,以将它们合并在一起而不会使变量数量增加一倍。 第三个表是一个表,其中包含两个变量的名称,始终是一行中的两个匹配项。

如何使用表#3重命名表变量? 否则我可以直接使用表#3

加入/合并它们

1 个答案:

答案 0 :(得分:1)

让我看看是否有这个。您有两个数据框。称他们为df1df2

df1 <- data.frame(
    one   = 1:10,
    two   = 1:10,
    three = 1:10
)

df2 <- data.frame(
    third  = 1:10,
    second = 1:10,
    first  = 1:10
)

它们具有代表同一事物的变量,但命名不同。因此,例如“一个”对应于“第一”。

您还有第三个数据框,将名称“映射”在一起,如下所示:

dfnames <- data.frame(
    a = c("one",   "two",    "three"),
    b = c("first", "second", "third"),
    stringsAsFactors = FALSE
)

您的目标是使用该映射数据框更改df2中的名称,以匹配df1中的名称。这是一种方法:

names(df2) <- dfnames$a[match(names(df2), dfnames$b)]

现在假设df2还有一个要保留的额外列(“第四”),但是dfnames中没有列出

df2 <- data.frame(
    fourth = 1:10,
    third  = 1:10,
    second = 1:10,
    first  = 1:10
)

然后我们可以做:

newnames <- dfnames$a[match(names(df2), dfnames$b)]
names(df2) <- ifelse(is.na(newnames), names(df2), newnames)