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

如何在R语言DataFrame中计算每行与后续各行的peri值对应之和?

实现DataFrame中每行peri与后续行peri的两两求和

先确认下你的原始数据(注意你代码里写的rock[1:3,c("area","peri")]应该是笔误,实际输出有4行,所以修正为rock[1:4,c("area","peri")]):

myData <- rock[1:4,c("area","peri")]
print(myData)

输出:

area    peri
1 4990 2791.90
2 7002 3892.60
3 7558 3930.66
4 7352 3869.32

要实现每行peri和后续所有行peri相加,同时输出对应的两个area值,这里有两种简洁的实现方法:

方法一:用expand.grid筛选配对

先生成所有行索引的配对,再筛选出“前面行+后续行”的组合:

# 生成所有行索引的配对
row_pairs <- expand.grid(row1 = 1:nrow(myData), row2 = 1:nrow(myData))
# 只保留row1 < row2的配对,也就是前面行和后续行的组合
row_pairs <- row_pairs[row_pairs$row1 < row_pairs$row2, ]

# 构建结果数据框,提取对应area并计算peri之和
result <- data.frame(
  area1 = myData$area[row_pairs$row1],
  area2 = myData$area[row_pairs$row2],
  periSUM = myData$peri[row_pairs$row1] + myData$peri[row_pairs$row2]
)

print(result)

方法二:用combn直接生成组合(更简洁)

combn函数专门用来生成元素的所有不重复组合,完美适配这个场景:

# 生成所有2行的索引组合,自动按row1 < row2的顺序输出
row_combs <- combn(1:nrow(myData), 2)

# 构建结果数据框
result <- data.frame(
  area1 = myData$area[row_combs[1, ]],
  area2 = myData$area[row_combs[2, ]],
  periSUM = myData$peri[row_combs[1, ]] + myData$peri[row_combs[2, ]]
)

print(result)

两种方法运行后都会得到你想要的结果:

area1 area2 periSUM
1  4990  7002 6684.50
2  4990  7558 6722.56
3  4990  7352 6661.22
4  7002  7558 7823.26
5  7002  7352 7761.92
6  7558  7352 7799.98

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:33:19