R plyr 总结块

R plyr summarize chunks

我每天的体温table

+-------+-----+-------------+
| City  | Day | Temperature |
+-------+-----+-------------+
| Miami |   1 |          25 |
| Miami |   2 |          27 |
| Miami |   3 |          34 |
| Miami |   4 |          23 |
| Miami |   5 |          30 |
| Miami |   6 |          31 |
| Paris |   1 |          15 |
| Paris |   2 |          17 |
| Paris |   3 |          14 |
| Paris |   4 |          13 |
| Paris |   5 |          10 |
| Paris |   6 |          11 |
+-------+-----+-------------+

我将能够在 n 天内按城市 summarize 他们。

以 3 天为一组的结果示例

+-------+-----+---------------------+
| City  | Day |      AVGTemperature |
+-------+-----+---------------------+
| Miami | 1-3 |               28.66 |
| Miami | 4-6 |                  29 |
| Paris | 1-3 |               15.33 |
| Paris | 4-6 |                14.5 |
+-------+-----+---------------------+

我可以

AVGTemp <- ddply(temp, .(Day, City), summarize, AVGTemperature=mean(Temperature))

但这给了我每一天的平均值。我可以做到 returns 大块 n 天吗?

这是一个 dplyr 解决方案。将 breaks 从 3 更改为您想要的块数。

library(dplyr)
tab %>%
  mutate(day_group = cut(Day, 3, include.lowest = TRUE, labels = FALSE)) %>%
  group_by(City, day_group) %>%
  summarise(mean_temp = mean(Temperature), start_day = min(Day), end_day = max(Day))

# Source: local data frame [6 x 5]
# Groups: City [?]
# 
#     City day_group mean_temp start_day end_day
#   (fctr)     (int)     (dbl)     (int)   (int)
# 1  Miami         1      26.0         1       2
# 2  Miami         2      28.5         3       4
# 3  Miami         3      30.5         5       6
# 4  Paris         1      16.0         1       2
# 5  Paris         2      13.5         3       4
# 6  Paris         3      10.5         5       6