我可以通过分配一个col.names列表在R中从现有data.frame中创建一个data.frame?
问题描述:
我有,我分配给每个column.name变量的矢量的data.frame:我可以通过分配一个col.names列表在R中从现有data.frame中创建一个data.frame?
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)
答
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)
这是你想要的东西:'data.frame(setNames(DAT1,paste0(名称(DAT1) ,“1”)),setNames(dat2,paste0(names(dat1),“2”)))' –