旋转数据框时出错

时间:2017-05-26 10:32:03

标签: r reshape

我有一个数据框,所有变量都是因子类型

col0         col1     col2       col3 ..  Col100 
2017-01-01     12       23         34  ..   10
2017-01-02     119       24         39  ..   12

我正在尝试使用df1 <- melt(df)

获取如下所示的输出
Variable   Val
date     2017-01-01
date     2017-01-02
col1      12
col1      119
col2      23
col2      24
.
.
Col100    12

获得上述输出的任何动态方式?

2 个答案:

答案 0 :(得分:2)

只需将所有列指定为度量变量:

melt(df, measure.vars = 1:5)

给出:

   variable      value
1      col0 2017-01-01
2      col0 2017-01-02
3      col1         12
4      col1        119
5      col2         23
6      col2         24
7      col3         34
8      col3         39
9    Col100         10
10   Col100         12

这适用于来自meltreshape2的{​​{1}} - 函数。

使用过的数据:

data.table

答案 1 :(得分:1)

我们可能需要一个序列变量

library(data.table)
melt(setDT(df1, keep.rownames = TRUE), id.var = 'rn')[, -1]
#   variable      value
# 1:     col0 2017-01-01
# 2:     col0 2017-01-02
# 3:     col1         12
# 4:     col1        119
# 5:     col2         23
# 6:     col2         24
# 7:     col3         34
# 8:     col3         39
# --
# --
#201:   Col100         10
#202:   Col100         12

注意:通过执行melt,具有不同class的列将在单个“值”列中混淆,该列将为characterfactor,具体取决于'col0'的初始class

或者我们可以使用gather

library(tidyr)
gather(df1)