我在数据库中有一个表格如下:
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
但是如何总结这些块的花费时间?
答案 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