R中的排序和聚合

in那教

在R中使用了聚合函数,将数据条目从90k减少到1800

a=test$ID
b=test$Date
c=test$Value
d=test$Value1
sumA=aggregate(c, by=list(Date=b,Id=a), FUN=sum)
sumB=aggregate(d, by=list(Date=b,Id=a), FUN=sum)
final[1]=sumA[1],final[2]=sumA[2]
final[3]=sumA[3]/sumB[3]

现在我有一个月20个不同日期的数据,每天有将近90个不同的id,因此它在决赛桌中大约有1800个条目

我的问题是我想进一步汇总并找到每个日期的final [3]的最大值,以便剩下20个值。

简单来说-有20天。每天有90个ID的90个值,我想每天查找这90个值中的最大值。所以最后我将只剩下20个值,持续20天。

现在聚合函数在这里无法使用函数'max'而不是sum

Date    ID    Value   Value1 
1        A      20      10  
1        A      25      5  
1        B      50      5  
1        B      50      5
1        C      25      25 
1        C      35      5  
2        A      30      10  
2        A      25      45  
2        B      40      10   
2        B      40      30  

这是数据

现在通过使用Aggregate函数,我得到了最终表

Date    ID   x
1       A    45/15=3
1       B    100/10=10
1       c    60/30=2
2       A    55/55=1
2       B    80/40=2

现在我想要日期1和2的最大值

Date   max- Value
1      10
2       2
阿克伦

也许这会有所帮助。

test <- structure(list(Date = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L
), ID = c("A", "A", "B", "B", "C", "C", "A", "A", "B", "B"), 
Value = c(20L, 25L, 50L, 50L, 25L, 35L, 30L, 25L, 40L, 40L
), Value1 = c(10L, 5L, 5L, 5L, 25L, 5L, 10L, 45L, 10L, 30L
)), .Names = c("Date", "ID", "Value", "Value1"), class = "data.frame", row.names = c(NA, 
-10L))


 res1 <- aggregate(. ~ID+Date, data=test, FUN=sum)
 res1 <- transform(res1, x=Value/Value1)
 res1
 #  ID Date Value Value1  x
 #1  A    1    45     15  3
 #2  B    1   100     10 10
 #3  C    1    60     30  2
 #4  A    2    55     55  1
 #5  B    2    80     40  2

 aggregate(. ~Date, data=res1[,-c(1,3:4)], FUN=max)
#   Date  x
# 1    1 10
# 2    2  2
  • 首先,我aggregate基于两个分组变量(IDDate) on the two value column by using。〜`
  • 创建一个新的变量x,即Value/Value1transform
  • 是否aggregate使用一个分组变量(Date)进行了最后一次运行,并删除了除以外的其余变量x

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档