在 R 中将聚合计数数据转换为单个数据

Transforming Aggregate Count Data into Individual Data in R

我有一个聚合计数数据库,我想重塑它,使每一行对应一个个体:

在本例中,C 列表示聚合计数数据

数据集1

    [A] [B] [C]
[1]  A1  B1  4
[2]  A2  B2  2
[3]  A3  B3  1

我想将其转换为: 数据集2

    [A] [B] 
[1]  A1  B1 
[2]  A1  B1
[2]  A1  B1  
[3]  A1  B1
[4]  A2  B2
[5]  A2  B2
[6]  A3  B3

我查看了 R 中的 reshape 包,但我不确定是否有一个函数可以完成这项任务。感谢您的帮助!

使用base R

as.data.frame(lapply(df[1:2], rep, df$C))
   A  B
1 A1 B1
2 A1 B1
3 A1 B1
4 A1 B1
5 A2 B2
6 A2 B2
7 A3 B3

数据

df = data.frame('A' = c('A1', 'A2', 'A3'), 'B' = c('B1', 'B2', 'B3'), 'C' = c(4,2,1))

这是另一个使用 base R 的解决方案:

inds <- rep(seq_len(nrow(df1)), df1$C)
df2 <- df1[inds,]

将最后一行改为

df2 <- df1[inds, 1:2]

删除列 C

这给出了与 Nad Pat 的答案不同的行名称。使用哪种可能是个人喜好问题。

采用data.table方法

library(data.table)

data1 <- data.table(A=LETTERS[1:4], B=letters[1:4], C=1:4)

data1[, lapply(.SD, rep, C)][, -c("C")]