我有以下data.table
:
dt <- data.table(client = 1:2, Month1 = rnorm(2), Month2 = rnorm(2))
> dt
client Month1 Month2
1: 1 -0.1348442 0.6787494
2: 2 0.8431479 -1.3760579
我正在尝试使用reshape()`使dt
融化,使其看起来像这样:
client time value
1 1 -0.1348442
1 2 0.6787494
2 1 0.8431479
2 2 -1.3760579
我用this answer得到了非常相似的东西。但是,我真的不懂语法。
> reshape(dt, varying = 2:3, v.names = "Value", direction = "long")
client time Value id
1: 1 1 -0.1348442 1
2: 2 1 0.8431479 2
3: 1 2 0.6787494 1
4: 2 2 -1.3760579 2
我希望下面的代码行能工作,因为文档指出varying
可以是名称的矩阵或单个向量。
> reshape(data = dt, varying = c("Month1", "Month2"), direction = "long")
> Error in guess(varying) :
failed to guess time-varying variables from their names
除非我添加v.names
参数,否则此方法不起作用。我不明白为什么添加此内容将有助于R识别宽列中对应于长列的列。有人可以解释吗?另外,有没有办法将id
列放在reshape()
内?