gpt4 book ai didi

r - 将数据分为 2 组,每对的元素在单独的组中

转载 作者:行者123 更新时间:2023-12-04 09:39:29 25 4
gpt4 key购买 nike

我有一个由两列组成的数据集 player1player2对于一组 n 个玩家。每 2 个玩家互相玩两次(一次 i 作为 player1 和 j 作为 player2 和一次 i 作为 player2 和 j 作为 player1 )

我想分离我的数据,以便我有一个 games1数据框,其中包括两个玩家的第一场比赛的所有游戏和一个数据框 game2其中包括他们所有的第二场比赛(显然每个子数据帧都是我原始数据帧大小的一半)

我已经考虑在所有行上使用 for 循环进行迭代并定义一个标志来确定这是否是两个玩家正在玩的第一场比赛。我只是想知道是否有更简单/更快的方法。

我有一个 data.frame()

# reproducible exmaple
df1 <- read.table(text = "player1 player2
1: 1 2
2: 2 3
3: 3 2
4: 1 3
5: 2 1
6: 3 1", header = TRUE)

我需要:
data.frame()
player1 player2
1: 1 2
2: 2 3
3: 1 3


1:         3        2
2: 2 1
3: 3 1

最佳答案

一个稍微难看的解决方案是按行排序,然后通过 duplicated(...) 得到这两个组。和 duplicate(..., fromLast = TRUE) , IE。

d1 <- data.frame(t(apply(df1, 1, function(i) sort(i, decreasing = TRUE))))

df1[!duplicated(d1),]
# player1 player2
#1: 1 2
#2: 2 3
#4: 1 3

#AND

df1[!duplicated(d1, fromLast = TRUE),]
# player1 player2
#3: 3 2
#5: 2 1
#6: 3 1

由于不建议在全局环境中保留大量对象,因此可以将它们添加到列表中,即
list1 <- list(df1[!duplicated(d1),], df1[!duplicated(d1, fromLast = TRUE),])

关于r - 将数据分为 2 组,每对的元素在单独的组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48988508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com