首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将data.frame中的列堆叠为R中的一列

将data.frame中的列堆叠为R中的一列
EN

Stack Overflow用户
提问于 2012-11-28 11:03:44
回答 2查看 23.3K关注 0票数 10

我在将data.frame中的列堆叠成一列时遇到了问题。现在我的数据看起来像这样:

代码语言:javascript
运行
复制
id   time    black   white   red 
a     1       b1      w1     r1
a     2       b2      w2     r2
a     3       b3      w3     r3
b     1       b4      w4     r4
b     2       b5      w5     r5
b     3       b6      w6     r6

我正在尝试转换data.frame,使其看起来像这样:

代码语言:javascript
运行
复制
id   time  colour 
a     1     b1
a     2     b2
a     3     b3
b     1     b4
b     2     b5
b     3     b6
a     1     w1
a     2     w2
a     3     w3
b     1     w4
b     2     w5
b     3     w6
a     1     r1
a     2     r2
.     .     .
.     .     .
.     .     .

我猜这个问题需要使用reshape包,但我不太确定如何使用它将多列堆叠到一列下。有人能在这方面提供帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-28 11:12:35

这是来自重塑的熔化:

代码语言:javascript
运行
复制
library(reshape)
melt(x, id.vars=c('id', 'time'),var='color')

而使用reshape2 (reshape的一个最新、更快的版本),语法几乎是相同的。

帮助文件中有一些有用的示例(参见?melt和指向melt.data.frame的链接)。

在您的示例中,类似以下内容将会起作用(假设您的data.frame名为DF)

代码语言:javascript
运行
复制
library(reshape2)
melt(DF, id.var = c('id','time'), variable.name = 'colour')
票数 12
EN

Stack Overflow用户

发布于 2014-03-30 14:34:12

既然你在标题中提到了“堆叠”,你也可以看看基数R中的stack函数:

代码语言:javascript
运行
复制
cbind(mydf[1:2], stack(mydf[3:5]))
#    id time values   ind
# 1   a    1     b1 black
# 2   a    2     b2 black
# 3   a    3     b3 black
# 4   b    1     b4 black
# 5   b    2     b5 black
# 6   b    3     b6 black
# 7   a    1     w1 white
# 8   a    2     w2 white
# 9   a    3     w3 white
# 10  b    1     w4 white
# 11  b    2     w5 white
# 12  b    3     w6 white
# 13  a    1     r1   red
# 14  a    2     r2   red
# 15  a    3     r3   red
# 16  b    1     r4   red
# 17  b    2     r5   red
# 18  b    3     r6   red

如果“黑色”、“白色”和“红色”列中的值是factors,则需要首先将它们转换为character值。

代码语言:javascript
运行
复制
cbind(mydf[1:2], stack(lapply(mydf[3:5], as.character)))
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13597091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档