在R中每个条目将列转换为多行

时间:2013-10-22 23:30:54

标签: r excel reshape

我有以下数据:

word   Jan-2013  Feb-2013  Mar-2013
A      1         2         3 
B      5         2         4

我想将多个日期列转换为一个命名日期,并为该值添加一个附加列。

word date       value
A    Jan-2013   1
A    Feb-2013   2
A    Mar-2013   3
B    Jan-2013   5
B    Feb-2013   2
B    Mar-2013   4

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:7)

其他R选项

除了Metrics的答案之外,这里还有两个R选项(假设你的data.frame被称为“mydf”):

cbind(mydf[1], stack(mydf[-1]))

library(reshape)
melt(mydf, id.vars="word")

Excel选项

我不是Excel用户,但由于此问题也被标记为“Excel”,我建议使用Tableau Reshaper Excel add-on

对于您的示例,它非常简单:

  1. 安装附加组件并激活后,转到“Tableau”菜单。

  2. 选择包含要取消堆叠的值的单元格。单击“确定”。

  3. 查看结果。

    Basic "wide" to "long" reshaping with Tableau's Excel add-on

答案 1 :(得分:3)

使用基础R中的reshape(df1是您的数据框)

 reshape(df1,times=names(df1)[-1],timevar="date",varying=names(df1)[-1],v.names="value",new.row.names=1:6,ids=NULL,direction="long")
  word     date value
1    A Jan.2013     1
2    B Jan.2013     5
3    A Feb.2013     2
4    B Feb.2013     2
5    A Mar.2013     3
6    B Mar.2013     4