2015-11-07 36 views
3

Как преобразовать таблицу непредвиденных ситуаций 2x2 в длинный формат данных? Я попытался это:Как преобразовать таблицу непредвиденных ситуаций 2x2 в длинный формат данных?

library(reshape2) 
Table <- matrix(c(7,67,19,71), 2, 2, byrow=TRUE) 
rownames(Table) <- c('Drug', 'No_Drug') 
colnames(Table) <- c('Comp', 'No_Comp') 
melt(Table) 

Я получаю это, а не кадр данных из 164 строк, классифицированного по Drug против No_Drug

Var1 Var2 value 
1 Drug Comp  7 
2 No_Drug Comp 19 
3 Drug No_Comp 67 
4 No_Drug No_Comp 71 
+0

Что вы ожидаемый выход? – akrun

+0

'data.frame (expand.grid (rownames (Таблица), colnames (Таблица)), value = c (Table))'? – MichaelChirico

+0

Все эти теги и теги 'r'

ответ

1

Из того, что я понимаю, вы пытаетесь преобразовать 4x3 расплавленные данные .frame в 164x2 data.frame. Вы можете попробовать expandRows() из splitstackshape пакета:

Расширяет (размножается) строки в data.frame или data.table, либо фиксированным номером, указанным вектором, или значение, содержащееся в одном из столбцы в исходном data.frame или data.table.

В вашем случае, просто сделать:

library(splitstackshape) 
m <- melt(Table) 
expandRows(m, "value") 

Примечание: Это удобная обертка вокруг основания R:

out <- m[rep(sequence(nrow(m)), m[["value"]]), ] 
out[["value"]] <- NULL 
+0

Я предлагаю модераторам добавить тег для пакета splitstackshape – FTF

+0

@FTF Я добавил тег. Если у вас когда-либо возник вопрос, связанный с этим пакетом, вы сможете его использовать. –

+0

Спасибо за ваш комментарий @Steven Beaupré. Невозможно библиотека (dplyr) фильтр (вне) ## произведение тоже? – FTF

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