我有一个包含测试结果的数据框(行是玩家;列 Q1 ... Q6 是不同的问题)。现在我想找出哪对玩家的总得分最高:
# Generating sample data.
n = 6
set.seed(1986)
results_df = data.frame(Player = c("A", "B", "C", "D", "E", "F"),
Q1 = sample(0:1, size = n, replace = TRUE),
Q2 = sample(0:1, size = n, replace = TRUE),
Q3 = sample(0:1, size = n, replace = TRUE),
Q4 = sample(0:1, size = n, replace = TRUE),
Q5 = sample(0:1, size = n, replace = TRUE),
Q6 = sample(0:1, size = n , replace = TRUE))
head(results_df)
Player Q1 Q2 Q3 Q4 Q5 Q6
1 A 1 0 1 0 0 0
2 B 1 1 0 0 0 0
3 C 0 1 0 1 0 1
4 D 0 1 1 0 1 1
5 E 1 1 1 1 1 1
6 F 1 0 0 1 0 1
1 和 0 是虚拟的,表示每个玩家的问题是正确 (1) 还是错误 (0)。现在我想将每对球员组合起来,看看他们作为一对球员会做得如何。
有谁知道如何将上面的数据框转换为如下所示的内容?
(这里我只是手工总结了每个对的组合:A 有 3 个对的题,再加上 B 有 3 题对而 A 错的题,将得到 6 个组合,依此类推...)
Player A B C D E F
1 A 2 3 5 5 6 4
2 B 3 2 4 5 6 4
3 C 5 4 3 5 6 4
4 D 5 5 5 4 6 6
5 E 6 6 6 6 6 6
6 F 4 4 4 6 6 3
最佳答案
带有外部
的基本R选项
> lst <- asplit(`row.names<-`(as.matrix(results_df[-1]), results_df$Player), 1)
> outer(lst, lst, FUN = Vectorize(function(x, y) sum(x + y > 0)))
A B C D E F
A 2 3 5 5 6 4
B 3 2 4 5 6 4
C 5 4 3 5 6 4
D 5 5 5 4 6 6
E 6 6 6 6 6 6
F 4 4 4 6 6 3
关于r - 求 R 中行对的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70987898/