2016-11-10 2 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

Я думаю, что ваш код правильный, и вы просто не понимаете, как работает расплав. Плавление превращает ваши данные в длинный формат, и похоже, что ваш код работает, поскольку у вас есть 13 переменных и 5000 наблюдений, поэтому, когда вы превратились в длинный формат, вы получите 13 * 5000 = 65000 наблюдений.

Однако в длинном формате строка не должна рассматриваться как одно наблюдение, а это экземпляр одной меры. Таким образом, в длинном формате вы заметите, что получившаяся талая таблица данных будет выглядеть.

Дата Total.Events Unique.Events значение переменной

И так для каждой уникальной комбинации трех ваших мер, вы будете иметь тринадцать строк, а каждая строка будет переменная - пара значений.

Смежные вопросы