我的问题: Ive有3张桌子:2张带Obs。和变量。 这两个表的变量名称不同,但描述的是同一件事。因此,我想在一个表中重命名变量,以将它们合并在一起而不会使变量数量增加一倍。 第三个表是一个表,其中包含两个变量的名称,始终是一行中的两个匹配项。
如何使用表#3重命名表变量? 否则我可以直接使用表#3
加入/合并它们答案 0 :(得分:1)
让我看看是否有这个。您有两个数据框。称他们为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
还有一个要保留的额外列(“第四”),但是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)