我可以通过分配col.names列表从现有data.frame中创建R中的data.frame吗?

时间:2015-11-19 22:03:18

标签: r dataframe names renaming

我有一个data.frame,我为每个column.name分配一个变量向量:

dat1 <- data.frame(a=1:5,b=1:5,c=1:5)

我想创建一个新的data.frame,但不是单独分配每个列,我想一次分配它们。例如,如果我想将它们全部重命名:

dat.new <- data.frame(paste(names(dat1),'1',sep='') = dat1)

这显然很有效。有没有办法让它发挥作用?

我知道我可以使用names()重命名,但实际上看起来有用的方案是组合多个共享相同col.names的数据集(我不想简单地使用它) rbind):

dat1 <- data.frame(a=1:5,b=1:5,c=1:5)
dat2 <- data.frame(a=6:10,b=6:10,c=6:10)
dat.new <- data.frame(paste(names(dat1),'1',sep='') = dat1, paste(names(dat1),'2',sep='') = dat2)

1 个答案:

答案 0 :(得分:0)

library(dplyr)
library(tidyr)
library(magrittr)

好的,这是第一部分:

dat2 = 
  dat1 %>%
  setNames(names(.) %>% 
             paste0("1") )

这是第二部分。重塑有点复杂但更灵活,特别是如果你的行ID已经有不同的行数:

list(dat1, dat2) %>%
  bind_rows(.id = "number") %>%
  group_by(number) %>%
  mutate(id = 1:n()) %>%
  gather(variable, value, -number, -id) %>%
  unite(new_variable, variable, number) %>%
  spread(new_variable, value)