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

如何在R中对数据集price变量的相邻成对行计算平方差?

R语言计算成对行的price差值平方

问题说明

现有数据集test,需计算price变量中第1与第2行、第3与第4行、第5与第6行的差值平方,最终生成仅含price_diff列的diff.data数据集。

原始数据集

test <- data.frame(id = c(6, 16, 26, 36, 46, 56),
                    house = c(1, 5, 10, 23, 25, 27), 
                    price = c(79, 84, 36, 34, 21, 12))

期望输出

diff.data <- data.frame(price_diff = c(25, 4, 81))

解决方法

方法1:直接索引提取(符合你的尝试方向)

直接按奇偶行拆分price列,计算差值平方:

# 提取奇数行的price值(第1、3、5行)
odd_prices <- test$price[seq(1, nrow(test), 2)]
# 提取偶数行的price值(第2、4、6行)
even_prices <- test$price[seq(2, nrow(test), 2)]
# 计算差值平方并生成目标数据集
diff.data <- data.frame(price_diff = (even_prices - odd_prices)^2)

方法2:分组处理(通用型)

如果后续数据集行数可能变化,用分组逻辑更灵活:

# 给每2行添加一个分组标识
test$group <- rep(1:(nrow(test)/2), each = 2)
# 按分组计算每组内第2行减第1行的平方值
diff.data <- aggregate(price ~ group, data = test, function(x) (x[2] - x[1])^2)
# 整理成目标格式
diff.data <- data.frame(price_diff = diff.data$price)

方法3:dplyr包实现(简洁高效)

用dplyr的分组聚合功能快速完成:

library(dplyr)

diff.data <- test %>%
  # 生成分组标识
  mutate(group = rep(1:(nrow(.)/2), each = 2)) %>%
  # 按分组计算差值平方
  group_by(group) %>%
  summarise(price_diff = (price[2] - price[1])^2) %>%
  # 取消分组并保留目标列
  ungroup() %>%
  select(price_diff)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:16:13