因此,我试图找到数据集的每个客户 ID 每年的最大、第二个最大和第三个最大用水量。我正在使用 R 和 sqldf 库,但我对任何 R 解决方案持开放态度。这是一些示例数据:
Year | ID | Month | Use |
----------------------------
2009 101 1 103
2009 101 2 209
2009 101 3 375
2009 101 4 360
2010 101 1 170
2010 101 2 381
2010 101 3 275
2010 101 4 260
2009 102 1 263
2009 102 2 234
2009 102 3 45
2009 102 4 275
2010 102 1 469
2010 102 2 107
2010 102 3 354
2010 102 4 436
理想情况下,我想返回三个矩阵,,,,max1
列,,,max2
(或第二个最大值或第三个最大值,分别) 等等。max3
ID
Year
Max
max1 = [101, 2009, 375, 101, 2010, 381, 102, 2009, 275, 102, 2010, 469]
我最初的方法是使用listofIDs
andlistofYears
作为 and 的域ID
创建一个嵌套的 for 循环Year
,例如:
for i in 1:length(listofIDs){
for y in 1:length(listofYears){
monthlylist<-sqldf("select Month, Use from Dataframe where ID=listofIDs[i] and Year=listofYears[y]")
然后排序monthlylist
并取出最大值等。但sqldf
不会读取这样的变量,所以我必须每次明确说明 where ID = 101
, where 。ID = 102
关于如何让 sqldf 识别我的变量的任何想法,或者找到按年份和 ID 聚合的最大值、第二个最大值和第三个最大值的更好方法?我正在处理大型数据集,因此理想情况下不会永远持续下去。