2016-11-10 121 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行,每行會是一個變量 - 值對。