正在寻找一个R函数,它允许我根据5列中的匹配值汇总df中的数据

正在寻找一个R函数,它允许我根据5列中的匹配值汇总df中的数据,r,R,我有一个包含NBA比赛日志数据的数据集。每一行都有关于一场比赛的数据,其中包括10列,显示当时每个队的球员。这些列标记为A1、A2、A3、A4、A5和H1、H2、H3、H4、H5 使用R,我想根据A1、A2。。。H1,H2。。。柱。问题是,玩家不是在每一行中按相同的顺序分组的。在下面的示例中,我需要总结第1行和第3行,因为它们都包含玩家1、2、3、4和5,只是顺序不同: Row | A1 | A2 | A3 | A4 | A5 | pts ----|----|----|----|----|--

我有一个包含NBA比赛日志数据的数据集。每一行都有关于一场比赛的数据,其中包括10列,显示当时每个队的球员。这些列标记为A1、A2、A3、A4、A5和H1、H2、H3、H4、H5

使用R,我想根据A1、A2。。。H1,H2。。。柱。问题是,玩家不是在每一行中按相同的顺序分组的。在下面的示例中,我需要总结第1行和第3行,因为它们都包含玩家1、2、3、4和5,只是顺序不同:

Row | A1 | A2 | A3 | A4 | A5 | pts 
----|----|----|----|----|----|-----
1   | p1 | p2 | p3 | p4 | p5 | 2   < row 1 equals row 3
----|----|----|----|----|----|----- 
2   | p2 | p7 | p3 | p4 | p5 | 3 
----|----|----|----|----|----|----- 
3   | p5 | p2 | p3 | p4 | p1 | 1   < row 3 equals row 1
----|----|----|----|----|----|----- 
4   | p6 | p2 | p9 | p4 | p5 | 3
理想情况下,我想要一个可以直接总结这些组的函数,但我想也许我需要一个可以首先对每一行进行水平排序的函数。然后我可以创建一个连接这5列的值,并使用它来汇总数据,这就是我在Excel中的工作方式


我是R新手,所以我只是在寻找最有效的方法

您可以添加一列已排序的字段。例如:

dat <- read.table(header=TRUE, stringsAsFactors=FALSE, text='
Row  A1  A2  A3  A4  A5  pts 
1    p1  p2  p3  p4  p5  2
2    p2  p7  p3  p4  p5  3 
3    p5  p2  p3  p4  p1  1
4    p6  p2  p9  p4  p5  3')

dat$sorted <- apply(subset(dat, select=A1:A5), 1, function(v) paste(sort(v), collapse = ","))
dat
#   Row A1 A2 A3 A4 A5 pts         sorted
# 1   1 p1 p2 p3 p4 p5   2 p1,p2,p3,p4,p5
# 2   2 p2 p7 p3 p4 p5   3 p2,p3,p4,p5,p7
# 3   3 p5 p2 p3 p4 p1   1 p1,p2,p3,p4,p5
# 4   4 p6 p2 p9 p4 p5   3 p2,p4,p5,p6,p9

仅供参考:如果数据采用更易于使用的格式,这将非常有帮助。示例包括:1以编程方式构建数据,例如使用data.frame,但并不总是美观;2与您的答案相同,但没有管道和破折号,请参阅我答案的文本部分;3组合:以编程方式与read.table或类似文件结合,使用直观的简单格式;或dputx或dputheadx的4个输出(如果较大)。第三种方法适用于这样的小数据集。如果数据中嵌入了空格,则可能无法使用,因此请替换空格或选择第四个选项。
dat$groupavg <- ave(dat$pts, dat$sorted, FUN=mean)
dat$groupsum <- ave(dat$pts, dat$sorted, FUN=sum)
dat
#   Row A1 A2 A3 A4 A5 pts         sorted groupavg groupsum
# 1   1 p1 p2 p3 p4 p5   2 p1,p2,p3,p4,p5      1.5        3
# 2   2 p2 p7 p3 p4 p5   3 p2,p3,p4,p5,p7      3.0        3
# 3   3 p5 p2 p3 p4 p1   1 p1,p2,p3,p4,p5      1.5        3
# 4   4 p6 p2 p9 p4 p5   3 p2,p4,p5,p6,p9      3.0        3