从频率表生成数据框

4

我有一个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)),也可以在这里),但我想用两列(性别、惩罚)来生成包含500行的数据框。
我该如何在R中实现?

这可能是这个的重复。 - David Arenburg
2个回答

7

试试这个:

long <- as.data.frame.table(datax)
longer <- long[rep(1:nrow(long), long$Freq), -3]

1
就是这样。太棒了! - ben_aaron

1
使用dplyr:
as.data.frame.table(datax) %>%
    rowwise() %>%
    do(data.frame(rep(.$gender, .$Freq), .$punishment))

这将为您数据中的每一行构建一个新表格,重复出现“Freq”次,并将它们连接成一个巨大的表格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接