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

如何在R中根据指定值调整数据集中各ID对应的观测行数量

R实现按指定列数值重复行的方法

你需要的是根据nb列的数值将对应行重复指定次数,有多种成熟的实现方案,以下方法均可以实现「ID=1生成5行、ID=2生成12行」的需求:

方法1:tidyverse 生态专用函数(最简洁直观)

使用tidyr包的uncount()函数,是官方专门为该类需求设计的功能:

# 加载包
library(tidyr)

# 假设你的原数据框名为df
result <- uncount(df, weights = nb, .remove = FALSE)

参数说明:

  • weights 指定用于控制重复次数的列,这里填nb即可
  • .remove = FALSE 保留原数据中的nb列,默认值为TRUE会删除该列,可根据需求调整

方法2:Base R 实现(无需安装额外包)

用基础的行索引重复即可实现:

result <- df[rep(seq_len(nrow(df)), df$nb), ]

如果需要重置行号,可以再加一步:

rownames(result) <- NULL

方法3:data.table 实现(适合超大数据量,性能最优)

library(data.table)
# 转换为data.table格式后按索引重复
setDT(df)
result <- df[rep(1:.N, nb)]

以上三种方法都可以直接实现你需要的转换效果,可根据你的使用场景选择。

内容的提问来源于stack exchange,提问作者Ruser-lab9

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:09:04