堆叠数字数据框并在单个指令中更改列名称

时间:2015-09-25 11:51:21

标签: r dataframe

我有一个纯粹的数字数据框,我想要将它们的列堆叠(连接在一起)。 foo <- matrix(rnorm(100),20,5) foo <- data.frame(foo) bar <- stack(foo) 做得很好:

stack

但是,我不喜欢values提供的默认列名,即idcolnames(bar) <- c("x","y") 。当然,我可以用

更改它们
true

但我想知道是否有任何函数可以让我定义生成(堆叠)数据框的列名。

2 个答案:

答案 0 :(得分:5)

您可以使用melt库中的reshape2功能:

library(reshape2)
bar <- melt(foo, value.name = "x", variable.name = "y")

P.S:

  • 请注意,列的顺序与调用堆栈函数所产生的顺序相反
  • 您可以完全相同地使用melt包中的data.table功能。

答案 1 :(得分:3)

使用gather包中的tidyr函数尝试此操作:

library(tidyr)

gather(foo, y, x)