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

为R数据框添加重复组标识ID2,优化建模计算效率

R数据框分组生成标识ID2并关联模拟结果

原始数据

现有如下R数据框:

df <- data.frame(ID = c('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'),
                 var1 = c(1, 1, 3, 4, 5, 5, 7, 8),
                 var2 = c(1, 1, 0, 0, 1, 1, 0, 0),
                 var3 = c(50, 50, 30, 47, 33, 33, 70, 46))

需求说明

  • var1至var3是建模软件的数值输入,为节省计算时间,仅需模拟这三列的唯一组合实例
  • 需要新增标识列ID2,将var1-var3取值完全相同的行归为一组,用该组内的所有ID拼接作为ID2的值
  • 最终通过ID2将模拟结果关联回主数据框

实现代码

使用dplyr包可快速实现需求:

library(dplyr)

df_with_id2 <- df %>%
  group_by(var1, var2, var3) %>%
  mutate(ID2 = paste(ID, collapse = "")) %>%
  ungroup()

# 查看输出结果
print(df_with_id2)

运行后得到的结果如下:

# A tibble: 8 × 5
  ID    var1  var2  var3 ID2  
  <chr> <dbl> <dbl> <dbl> <chr>
1 a         1     1    50 ab   
2 b         1     1    50 ab   
3 c         3     0    30 c    
4 d         4     0    47 d    
5 e         5     1    33 ef   
6 f         5     1    33 ef   
7 g         7     0    70 g    
8 h         8     0    46 h    

后续操作

筛选var1-var3与ID2的唯一行用于模拟:

unique_sim_rows <- df_with_id2 %>%
  distinct(var1, var2, var3, ID2)

将模拟结果保存为包含ID2和模拟输出列的数据框后,用left_join关联回主数据框:

# 假设模拟结果数据框为sim_results
# sim_results <- data.frame(ID2 = c("ab", "c", "d", "ef", "g", "h"), sim_output = c(10, 20, 30, 40, 50, 60))

final_df <- left_join(df_with_id2, sim_results, by = "ID2")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:10:24