R中有没有办法计算行集之间的最大差值+平均值?
Is there a way in R to calculate max difference + average between sets of rows?
我对不同条件下的列求和有疑问,真的需要一些帮助。
考虑这个数据table:
animal on
animal off
Time
cat
dog
0
dog
cat
10
cat
dog
30
dog
cat
40
cat
dog
50
horse
cat
60
cat
horse
100
dog(END)
cat(END)
110
我想在这里计算动物在围场停留的最长和平均时间。这个简单的例子有两个,但实际上有数百个!查看“时间”列,狗在第二行和第三行之间最多停留了 20 分钟。所以最多 20 分钟,平均 15 分钟(一节 20 分钟,一节 10 分钟)。或者,猫最多停留十分钟,平均十分钟(它在围场上每次十分钟,三次)。
所以我的输出看起来像这样:
animal
Max time
Average Time
cat
10
10
dog
20
15
horse
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
我对不同条件下的列求和有疑问,真的需要一些帮助。
考虑这个数据table:
animal on | animal off | Time |
---|---|---|
cat | dog | 0 |
dog | cat | 10 |
cat | dog | 30 |
dog | cat | 40 |
cat | dog | 50 |
horse | cat | 60 |
cat | horse | 100 |
dog(END) | cat(END) | 110 |
我想在这里计算动物在围场停留的最长和平均时间。这个简单的例子有两个,但实际上有数百个!查看“时间”列,狗在第二行和第三行之间最多停留了 20 分钟。所以最多 20 分钟,平均 15 分钟(一节 20 分钟,一节 10 分钟)。或者,猫最多停留十分钟,平均十分钟(它在围场上每次十分钟,三次)。
所以我的输出看起来像这样:
animal | Max time | Average Time |
---|---|---|
cat | 10 | 10 |
dog | 20 | 15 |
horse | 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