2016-11-10 74 views
-1

所以我在R中使用data table,大概有5000个观测值。我已经将所有这些新的等级变量开发成它们自己的类别(例如等级1,等级2,等级3等),现在我想将它们组合成一个变量,称为Grade。我已经使用了这个命令:在data.table中熔化r

DT.m1 = melt(
    MathSummary, 
    id.vars = c("Date", "Total.Events", "Unique.Events"), 
    measure.vars = c("Gradeprek", "Grade1", "Grade2", "Grade3", "Grade4", 
           "Grade5", "Grade6", "Grade7", "Grade8", 
           "Algebra1", "Algebra2", "Geometry", "Precalculus"), 
    value.factor=TRUE, na.rm=TRUE 
) 

然而,当它结果出来时,它给了我65000个观察值。也许它可能创造了重复或其他东西。一分钱为你的想法?

+1

13 measure.vars * 5000 = 65000行。这就是'熔化'所做的。 – thelatemail

+0

你期待什么作为输出? –

+0

我期待它仍然具有相同的5000个观察值,但在一列中名为 –

回答

0

我认为你的代码是正确的,你只是不理解融化是如何工作的。 Melt将数据转换为长格式,并且它看起来像您的代码正在工作,因为您有13个变量和5000个观察值,所以当变成长格式时,您会得到13 * 5000 = 65000个观测值。

但是,在长格式中,行不应被视为单个观察值,而应该是单个度量值实例。因此,在长格式中,您会注意到生成的熔化的data.table看起来像。

日期Total.Events Unique.Events变量值

所以为你的三个措施,每一个独特的组合,你就会有13行,每行会是一个变量 - 值对。