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

在R语言中累加行数据并创建新的总循环计数列

循环测试数据集的累计循环计数计算

需求说明

我有一份记录循环测试随时间变化的数据集,每次测试结束后循环计数会重置,后续测试会继续进行。需要在第一次重置后累加TotlCycle列的值,生成一个显示总循环计数的新列New_Total_Cycle。其中Test_Location为分组依据,同一位置下的多组测试需连续累加(例如Location_1下的Test、Test-2、Test-3)。

原始数据集

数据集构造代码

cycle <- data.frame(TotlCycle = c (5, 6, 25, 45, 5, 6, 25, 49, 5, 6, 25, 47),
                    Test_Name = c ("Test", "Test", "Test", "Test", "Test-2", "Test-2", "Test-2", "Test-2", "Test-3", "Test-3", "Test-3", "Test-3"),
                    Test_Location = "Location_1")

数据集输出

TotlCycle Test_Name Test_Location
1          5      Test    Location_1
2          6      Test    Location_1
3         25      Test    Location_1
4         45      Test    Location_1
5          5    Test-2    Location_1
6          6    Test-2    Location_1
7         25    Test-2    Location_1
8         49    Test-2    Location_1
9          5    Test-3    Location_1
10         6    Test-3    Location_1
11        25    Test-3    Location_1
12        47    Test-3    Location_1

期望结果

结果构造代码

cycle2 <- data.frame(TotlCycle = c (5, 6, 25, 46, 5, 6, 25, 49, 5, 6, 25, 47),
                     Test_Name = c ("Test", "Test", "Test", "Test", "Test-2", "Test-2", "Test-2", "Test-2", "Test-3", "Test-3", "Test-3", "Test-3"),
                     New_Total_Cycle = c (5, 6, 25, 45, 50, 51, 70, 94, 99, 100, 119, 141),
                     Test_Location = "Location_1")

结果输出

TotlCycle Test_Name New_Total_Cycle Test_Location
1          5      Test               5    Location_1
2          6      Test               6    Location_1
3         25      Test              25    Location_1
4         46      Test              45    Location_1
5          5    Test-2              50    Location_1
6          6    Test-2              51    Location_1
7         25    Test-2              70    Location_1
8         49    Test-2              94    Location_1
9          5    Test-3              99    Location_1
10         6    Test-3             100    Location_1
11        25    Test-3             119    Location_1
12        47    Test-3             141    Location_1

解决方案(使用dplyr包)

通过分组计算每组测试的总循环数,再累加前置测试的总循环数作为偏移量,最终得到累计循环计数:

library(dplyr)

cycle_result <- cycle %>%
  # 按测试位置分组,同一位置的测试连续累加
  group_by(Test_Location) %>%
  # 计算每个Test_Name组内的最大TotlCycle(即该测试的总循环数)
  mutate(test_total = max(TotlCycle) %>% rep(n())) %>%
  # 计算每个Test_Name对应的累计偏移量(前面所有测试的总循环数之和)
  group_by(Test_Location, Test_Name) %>%
  mutate(offset = sum(test_total[Test_Name != cur_group()$Test_Name])) %>%
  # 生成新列:当前TotlCycle + 偏移量
  mutate(New_Total_Cycle = TotlCycle + offset) %>%
  # 移除中间辅助列
  select(-test_total, -offset) %>%
  ungroup()

# 查看结果
print(cycle_result)

结果说明

  • 第一组测试Test的偏移量为0,所以New_Total_Cycle等于原TotlCycle
  • 第二组测试Test-2的偏移量为第一组的总循环数45,所以每个值都是TotlCycle + 45(5+45=50,6+45=51,以此类推)
  • 第三组测试Test-3的偏移量为前两组总循环数之和45+49=94,所以每个值都是TotlCycle + 94(5+94=99,6+94=100,以此类推)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:50:24