假设我有一个如下所示的数据框:
df.A
A B C
x 1 3 4
y 5 4 6
z 8 9 1
我想根据第二个中的列值替换第一个中的列名称:
df.B
Low High
A D
B F
C G
这样我得到:
df.A
D F G
x 1 3 4
y 5 4 6
z 8 9 1
我该怎么做?
我尝试从 df.B
中提取向量 df.B$High
并在 names(df.A)
中使用它,但所有内容都是按字母顺序排列的,并且移动了一位。此外,只有当 df.A
中的列顺序相对于 df.B$High
中的元素保守时,这才有效,但情况并非总是如此(并且在我的真实示例中,没有数字或字母方式可以将两者按相同顺序排序)。所以我认为我需要一个 rbind 类型参数来匹配元素,但我不确定。
谢谢!
最佳答案
您可以使用plyr中的rename
:
library(plyr)
dat <- read.table(text = " A B C
x 1 3 4
y 5 4 6
z 8 9 1",header = TRUE,sep = "")
> new <- read.table(text = "Low High
A D
B F
C G",header = TRUE,sep = "")
> rename(dat,replace = setNames(new$High,new$Low))
D F G
x 1 3 4
y 5 4 6
z 8 9 1
关于根据第二个数据帧中的值替换数据帧中的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20960562/