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

在R语言中移除多列重复值组合的数据行

移除玩家组合重复行的解决方案

这里有两种实用的方法来处理你的需求——去除数据框中Player_1至Player_7列里玩家组合重复的行(即使玩家在列中的顺序不同),每组仅保留任意一行即可:

方法1:使用dplyr包(简洁直观)

dplyr的管道式操作能让代码逻辑更清晰易读,步骤如下:

首先加载你提供的数据集:

df <- structure(list(X = c(29L, 32L, 34L, 44L, 47L, 49L), Player_1 = c("Mike Reilly", "Mike Reilly", "Mike Reilly", "Mike Reilly", "Mike Reilly", "Mike Reilly"), Player_2 = c("Andrew Harris", "Andrew Harris", "Andrew Harris", "Andrew Harris", "Andrew Harris", "Andrew Harris"), Player_3 = c("RB 1", "RB 1", "RB 1", "RB 2", "RB 2", "RB 2"), Player_4 = c("Dominque Rhymes", "Dominque Rhymes", "Duron Carter", "Dominque Rhymes", "Dominque Rhymes", "Duron Carter"), Player_5 = c("Duron Carter", "Shaquille Johnson", "Shaquille Johnson", "Duron Carter", "Shaquille Johnson", "Shaquille Johnson"), Player_6 = c("BC D", "BC D", "BC D", "BC D", "BC D", "BC D"), Player_7 = c("Shaquille Johnson", "Duron Carter", "Dominque Rhymes", "Shaquille Johnson", "Duron Carter", "Dominque Rhymes"), total_sal = c(39084L, 39084L, 39084L, 39084L, 39084L, 39084L)), row.names = c(NA, 6L), class = "data.frame")

然后执行去重操作:

library(dplyr)

df_unique <- df %>%
  rowwise() %>%
  # 对当前行的Player_1到Player_7排序,拼接成唯一标识字符串
  mutate(player_key = paste(sort(c(Player_1, Player_2, Player_3, Player_4, Player_5, Player_6, Player_7)), collapse = "|")) %>%
  ungroup() %>%
  # 根据唯一标识去重,保留每组第一行并保留所有原始列
  distinct(player_key, .keep_all = TRUE) %>%
  # 移除临时生成的标识列
  select(-player_key)

方法2:使用Base R(无需额外包)

如果你不想加载第三方包,base R也能轻松实现需求:

# 为每行生成排序后的玩家组合字符串作为唯一键
player_keys <- apply(df[, paste0("Player_", 1:7)], 1, function(row) paste(sort(row), collapse = "|"))

# 获取未重复的行索引
unique_rows <- !duplicated(player_keys)

# 提取去重后的数据集
df_unique_base <- df[unique_rows, ]

核心思路说明

两种方法的本质逻辑一致:将每行的玩家列元素排序后生成唯一标识——不管玩家在列中的顺序如何,同一个组合排序后的结果完全一致,以此作为分组依据去重,最终每组保留一行数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:43:03