【发布时间】:2017-04-26 18:49:18
【问题描述】:
我有两张桌子。具有如下所示的格式。其中之一是表 A:
students|Test Score|Year
A | 100 |1993
B | 81 |1992
C | 92 |1992
D | 88 |1993
我的另一个表 B 如下所示:
Class | Students | Year
1 | {A,D} |1993
2 | {B,C} |1992
我想在 R 中执行某种操作,通过该操作,我可以从表 A 中搜索表 B 中列下的数组中列出的学生,并将分数制成以下格式:
Class | Students | Mean Score
1 | {A,D} | 94
2 | {B,C} | 86.5
是否有任何公式可用于搜索,然后通过 R 中的某些操作合并这些结果?
我知道以上可以做到:
B$MeanScore <- sapply(strsplit(gsub("[{}]","", B$Students), split=","),
function(x) mean(A$Test.Score[A$Students %in% x]))
但是我有没有办法添加第二个条件,也就是匹配年份。上课年份和考试年份。
【问题讨论】:
-
这真的是一个数组,还是一个带括号字符的字符串值。请在reproducible format 中为您提供示例输入数据,以便更轻松地为您提供帮助。如果那是一个字符串,最好将它们分成几行(可能使用splitstackshape 包)并进行适当的连接。
-
如果表B是长格式会更容易。然后你可以与表 A 合并得到
Class和aggregate()的平均值。