我刚刚开始学习R编程,对于在数据帧的单个列中专门处理重复值几乎没有疑问。例如,考虑一个'样本' dataframe`
> Sample
id time1 time2 user group
21 21 21.7 16.1 A 1
22 22 22.6 17.0 A 2
23 23 20.9 16.2 A 3
24 24 21.6 16.2 B 1
25 25 22.2 16.9 B 1
26 26 22.5 16.9 B 1
27 27 22.2 17.3 B 2
28 28 24.3 16.8 D 2
29 29 22.3 16.8 D 2
30 30 22.6 17.0 E 3
31 31 20.1 16.5 E 3
32 32 22.0 16.9 E 3
33 33 22.8 16.5 E 4
34 34 22.0 17.0 E 4
35 35 22.4 17.0 F 1
36 36 22.3 16.3 F 1
37 37 20.6 16.2 F 2
现在我需要找到 1)具有最高平均时间的用户1' 2)属于'组的用户' 3并且拥有最大的' time2'
截至目前,我的理解是我应该使用重复(),唯一(),max()和mean()以及NROW()函数的组合。但我无法解决这个问题。关于如何处理的任何指示?
答案 0 :(得分:3)
您可以使用which.max
和tapply
:
1)
which.max(tapply(Sample$time1,Sample$user,mean))
D
3
2)
which.max(tapply(Sample$time2,Sample$user,max))
B
2
虽然要小心关系。