如何进行总结

时间:2017-01-18 05:21:49

标签: r dataframe sum

我在数据库中有一个表格如下:

id   place_id        minutes    spent_time
___   _________     ______   ___________
1       1              0        2
1       1              5        3
1       1              10       2
1       2              10       3
1       2              15       3
1       2              20       9

这里分钟是0表示间隔(0-5分钟)。所以在10-15分钟内,它在place_id 1中持续2分钟并在place_id 2中休息。

这给出了每五分钟花费的时间。所以我想知道在移动到地方之前在place_id 1中花费的总时间2.这意味着2 + 3 + 2 = 7分钟在地方1之前去2。

我试过了rle(df $ place_id),这将给出

3   3
1   2

但是如何总结这些块的花费时间?

2 个答案:

答案 0 :(得分:1)

我们可以按操作使用组

library(dplyr)
df1 %>% 
    group_by(id, place_id) %>%
    summarise(spent_time = sum(spent_time))

aggregate

中的base R
aggregate(spent_time ~ id + place_id, df1, FUN = sum)

答案 1 :(得分:1)

使用aggregate

> a
  id place_id minutes spent_time
1  1        1       0          2
2  1        1       5          3
3  1        1      10          2
4  1        2      10          3
5  1        2      15          3
6  1        2      20          9
> aggregate(a$spent_time, by=list(Category=a$place_id), FUN=sum)
      place_id spent_time
  1      1       7
  2      2       15

您还可以使用tapply,如下所示:

> tapply(a$spent_time, a$place_id, FUN=sum)
   place_id    spent_time
    1              7 
    2              15