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

R语言实现:按组与配对号查找玩家ID的对应伙伴ID

解决方案

你可以通过分组反转同组同配对的玩家ID来实现需求,以下是两种常用的R语言实现方式:

方法一:使用dplyr包

library(dplyr)

# 构造示例数据
df <- data.frame(group_id = c(1,1,1,1,2,2,2,2), 
                 player_id = c(1,2,3,4,5,6,7,8), 
                 player_pair = c(1,2,1,2,2,2,1,1))

# 新增伙伴ID列
df_result <- df %>%
  # 按组ID和配对号分组
  group_by(group_id, player_pair) %>%
  # 反转当前分组内的player_id,得到对应伙伴的ID
  mutate(counterpart_ID = rev(player_id)) %>%
  # 取消分组
  ungroup()

# 查看结果
print(df_result)

运行后会得到你期望的结果,每个玩家的counterpart_ID会对应同组同配对号的另一位玩家ID。

方法二:使用data.table包(适合大数据集)

如果你的数据集规模较大,data.table的分组操作效率更高:

library(data.table)

# 构造示例数据并转为data.table格式
df <- data.frame(group_id = c(1,1,1,1,2,2,2,2), 
                 player_id = c(1,2,3,4,5,6,7,8), 
                 player_pair = c(1,2,1,2,2,2,1,1))
setDT(df)

# 新增伙伴ID列
df[, counterpart_ID := rev(player_id), by = .(group_id, player_pair)]

# 查看结果
print(df)

原理说明

两种方法核心逻辑一致:通过group_id和player_pair分组,每个分组内恰好包含互为伙伴的两位玩家,反转分组内的player_id向量,就能直接得到每位玩家对应的伙伴ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:54:22