You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中将聚合计数数据转换为每行对应单个个体的数据集

R实现聚合计数数据集展开为单行个体格式的方法

你需要的是按计数列重复对应行的操作,无需使用reshape包,有多种更直接的实现方案:

首先构造和你示例一致的原始数据集:

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

方法1:基础R实现(无需安装额外包)

用内置rep()函数按C列的计数值重复行索引,提取需要的列即可:

result <- df[rep(seq_len(nrow(df)), df$C), c("A", "B")]
# 可选操作:重置行名消除重复的原始行号
rownames(result) <- NULL

方法2:tidyverse生态实现(代码可读性高)

tidyr包的uncount()就是专门为这个场景设计的函数:

library(tidyr)
result <- df %>% 
  uncount(weights = C) # 默认自动删除计数列C,完全匹配你的需求

如果需要保留原始计数列,添加参数.remove = FALSE即可。

方法3:data.table实现(大数据集处理效率更高)

适合处理十万行及以上的大体积数据集:

library(data.table)
setDT(df) # 转换为data.table格式
result <- df[rep(1:.N, C), .(A, B)]

reshape系列工具主要用于长表、宽表的互相转换,和你的行展开需求不匹配,所以找不到对应函数属于正常情况。

内容的提问来源于stack exchange,提问作者ntcha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:45:03