我有一个数据框,所有变量都是因子类型
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
获得上述输出的任何动态方式?
答案 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
这适用于来自melt
和reshape2
的{{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
的列将在单个“值”列中混淆,该列将为character
或factor
,具体取决于'col0'的初始class
或者我们可以使用gather
library(tidyr)
gather(df1)