根据第二个数据帧中的值替换数据帧中的 header

标签 r dataframe

假设我有一个如下所示的数据框:

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/

相关文章:

r - 带有 magrittr tee 运算符的多个 ggplots

r - 测量绘图的 "ink"

string - 如何将两个向量粘贴在一起并在末尾填充?

r - 基于具有重复观察的向量的子集数据

python - Pandas 数据框 : create new columns of labels based on other columns

r - 如何按字段类型(例如,数字、字符)对我的 data.frame 进行子集化?

python - 如何将字符串从 df.to_string() 转换回 DataFrame

hadoop - 如何将大部分数据合并到 spark/Hive 中的单个目录中

python - 我们如何提取数据框中具有顺序值的行?

Python - 如何在获取数据的同时避免 Pandas 中的错误(异常)?