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

如何在R中(如使用dplyr)将配对组中一方的值映射给另一方?

配对组内伙伴变量映射实现方法

我有一组配对组(dyad)内个体的数据,数据构造代码如下:

out <- data.frame("id" = seq(1:8), 
                  dyad = rep(letters[1:4], each = 2, times = 1), 
                  income = rep(c(1000, 900), 4)
                  )

生成的原始数据:

iddyadincome
1a1000
2a900
3b1000
4b900
5c1000
6c900
7d1000
8d900

需要新增一列income_partner,显示每个配对组内伙伴的收入,预期最终数据如下:

iddyadincomeincome_partner
1a1000900
2a9001000
3b1000900
4b9001000
5c1000900
6c9001000
7d1000900
8d9001000

解决方案

方法一:Base R 原生实现

利用ave()函数按配对组分组,对每组的income取反序,直接生成目标列:

out$income_partner <- ave(out$income, out$dyad, FUN = function(x) rev(x))

方法二:dplyr 包实现(tidyverse 风格)

如果习惯使用tidyverse生态,可通过分组后反转列值实现:

library(dplyr)

out <- out %>%
  group_by(dyad) %>%
  mutate(income_partner = rev(income)) %>%
  ungroup()

方法三:data.table 包实现(高效处理大数据)

针对大规模数据集,data.table的分组操作效率更优:

library(data.table)

setDT(out)[, income_partner := rev(income), by = dyad]

以上方法的核心逻辑是按配对组分组后,反转组内的目标变量顺序,适用于每组恰好2个个体的配对场景;若每组个体数更多,可根据具体的伙伴对应逻辑调整反转或索引方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:15:41