首页 > 解决方案 > R使用第三个表重命名列

问题描述

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

如何使用表 #3 重命名表变量?否则我可以使用表#3 直接加入/合并它们吗

标签: rforeign-keysmultiple-columnsrename

解决方案


让我看看我有没有这个。你有两个数据框;打电话给df1他们df2

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您要保留一个额外的列(“forth”),但未列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)

推荐阅读