说我有这个数据框,课程,有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),]
但我收到了错误。
答案 0 :(得分: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
答案 1 :(得分: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