我在2 * 4数组中有500个观测值的综合数据:
datax = array(c(120, 181, 50, 43, 41, 33,24,8), dim=c(2,4))
dimnames(datax) = list(gender= c('male', 'female')
, punishment = c('None', 'Community_service', 'Youth_prison', 'Normal_prison'))
我想从代表频率表“来源”的表中产生一个data.frame
。
我可以通过“ Freq”列(as.data.frame(as.table(datax))
,也可以是here)来表示它,但是我想生成具有500行和2列(性别,惩罚)的data.frame。
我将如何在R中做到这一点?
答案 0 :(得分:4)
尝试一下:
long <- as.data.frame.table(datax)
longer <- long[rep(1:nrow(long), long$Freq), -3]
答案 1 :(得分:1)
使用dplyr:
as.data.frame.table(datax) %>%
rowwise() %>%
do(data.frame(rep(.$gender, .$Freq), .$punishment))
这将为数据中的每一行构造一个新表,重复Freq
次,并将它们连接到一个巨型表中。