-1

假设我有这个数据框,课程,有 3 列(User, Course, Score),看起来像:

用户课程分数

  A   1.1     9
  A   1.1     8         
  B   1.2     7

只有它有更多的数据。如果我想获得一个数据框,每个用户的每门课程只有最高分,我该怎么做?我试过了:

lesson<-lesson[order(lesson$User,lesson$Course,-lesson$User),]

接着

lesson[!duplicated(lesson$User && lesson$Course),]

但我得到了一个错误。

4

2 回答 2

3
DF <-  read.table(text="User Course Score
A   1.1     9
A   1.1     8
B   1.1     1
B   1.2     7",header=TRUE)

aggregate(Score~Course*User,data=DF,FUN=max)

#  Course User Score
#1    1.1    A     9
#2    1.1    B     1
#3    1.2    B     7
于 2013-07-03T13:26:59.593 回答
0

或者你可能想试试 plyr 包

library(plyr)
ddply(DF,.(User,Course),transform,maxScore=max(Score,na.rm=TRUE))

User Course Score maxScore
 A    1.1     9        9
 A    1.1     8        9
 B    1.1     1        1
 B    1.2     7        7

或者如果您只想查看最高分

ddply(DF,.(User,Course),summarise,maxScore=max(Score,na.rm=TRUE))

User Course maxScore
 A    1.1        9
 B    1.1        1
 B    1.2        7
于 2013-07-03T14:51:04.247 回答