[英]Is there a way in R to calculate max difference + average between sets of rows?
我有一個關於不同條件的列的總和的問題,並且真的需要一些幫助。
考慮這個數據表:
動物在 | 動物關閉 | 時間 |
---|---|---|
貓 | 狗 | 0 |
狗 | 貓 | 10 |
貓 | 狗 | 30 |
狗 | 貓 | 40 |
貓 | 狗 | 50 |
馬 | 貓 | 60 |
貓 | 馬 | 100 |
狗(完) | 貓(完) | 110 |
我想在這里計算動物在圍場上停留的最長和平均時間。 這個簡單的例子有兩個,但實際上有數百個! 查看時間列,狗在第二行和第三行之間最多停留二十分鍾。 所以最多 20 分鍾,平均 15 分鍾(一段 20 分鍾和一段 10 分鍾)。 或者,貓最多停留 10 分鍾,平均停留 10 分鍾(它在圍場上停留 10 分鍾,每次 3 次)。
所以我的輸出看起來像這樣:
動物 | 最長時間 | 平均時間 |
---|---|---|
貓 | 10 | 10 |
狗 | 20 | 15 |
馬 | 40 | 40 |
任何幫助,將不勝感激!!
使用diff
、 group_by
和summarise
:
df %>%
mutate(time_diff = c(diff(Time), NA)) %>%
group_by(`animal on`) %>%
summarise(
`Max time` = max(time_diff, na.rm = TRUE),
`Average Time` = mean(time_diff, na.rm = TRUE)
)
# A tibble: 2 × 3
`animal on` `Max time` `Average Time`
<chr> <dbl> <dbl>
1 cat 10 10
2 dog 20 15
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.