R语言补全嵌套结构数据集并新增指定规则a列的实现咨询
实现方案
直接按行生成全量嵌套组合即可,该方案为向量化运算,4万行规模下运行效率完全满足需求:
library(tidyverse) # 原始数据集 original <- data.frame( ID = c(rep("John", 3), "Steve"), A = c(rep(3, 3), 1), B = c(rep(4, 3), 2), b = c(2, 3, 2, 2), detail = c(rep("GOOOOD", 4)) ) # 补全+新增字段代码 full_data <- original %>% rowwise() %>% reframe( ID = ID, A = A, B = B, a = 1:A, b = 1:B, detail = detail ) %>% ungroup()
逻辑说明
rowwise()将数据集转为按行处理模式,每条原始记录单独计算reframe()会针对每行的A、B取值自动生成全量组合:a取1到当前行A的所有整数,每个a下嵌套b取1到当前行B的所有整数,完全符合你要求的嵌套规则- 原有字段
ID、A、B、detail会自动复制到对应展开的所有新记录中,如果你不需要保留原始b字段,直接使用新生成的b字段即可 - 如果你的dplyr版本低于1.1.0,把
reframe替换为summarise即可,运行效果完全相同
效率说明
该方案底层为向量化运算,即使4万行原始数据平均每行展开10条,总数据量到40万行也仅需数秒即可处理完成,完全支持自动化批量运行。
内容的提问来源于stack exchange,提问作者Juan_814
相关产品推荐
相关产品推荐

