【发布时间】:2017-06-15 02:17:06
【问题描述】:
我有一个两部分问题。在创建类似于我的数据集时,我们可以从 airquality 数据集开始:
myaqm <- melt(airquality, id=c("Month", "Day"), na.rm = TRUE)
myaqm_dcast <- dcast(myaqm, Day+variable~Month,
value.var = "value", sum, margins=c("Day", "variable", "Month"))
给我们这个:
> head(myaqm_dcast, n=10)
Day variable 5 6 7 8 9 (all)
1 1 Ozone 41.0 0.0 135.0 39.0 96.0 311.0
2 1 Solar.R 190.0 286.0 269.0 83.0 167.0 995.0
3 1 Wind 7.4 8.6 4.1 6.9 6.9 33.9
4 1 Temp 67.0 78.0 84.0 81.0 91.0 401.0
5 1 (all) 305.4 372.6 492.1 209.9 360.9 1740.9
6 2 Ozone 36.0 0.0 49.0 9.0 78.0 172.0
7 2 Solar.R 118.0 287.0 248.0 24.0 197.0 874.0
8 2 Wind 8.0 9.7 9.2 13.8 5.1 45.8
9 2 Temp 72.0 74.0 85.0 81.0 92.0 404.0
10 2 (all) 234.0 370.7 391.2 127.8 372.1 1495.8
第一个问题:您如何从每天的(全部)小计中去除风?
我确信我们打算使用 dplyr,也许完全代替 dcast,但是对于我的生活,我找不到展示小计排除的示例。
第二个问题:同样,我们也在尝试解决如何包含所有变量的每日平均行,不包括Temp em>。所以数据集看起来像这样:
Day variable 5 6 7 8 9 (all)
1 1 Ozone 41.0 0.0 135.0 39.0 96.0 311.0
2 1 Solar.R 190.0 286.0 269.0 83.0 167.0 995.0
3 1 Wind 7.4 8.6 4.1 6.9 6.9 33.9
4 1 Temp 67.0 78.0 84.0 81.0 91.0 401.0
5 1 Day Avg 79.5 98.2 136.0 43.0 90.0 446.6
6 1 (all) 298.0 364.0 488.0 203.0 354.0 1707.0
7 2 Ozone 36.0 0.0 49.0 9.0 78.0 172.0
8 2 Solar.R 118.0 287.0 248.0 24.0 197.0 874.0
9 2 Wind 8.0 9.7 9.2 13.8 5.1 45.8
10 2 Temp 72.0 74.0 85.0 81.0 92.0 404.0
11 2 Day Avg 54.0 98.9 102.1 15.6 93.4 363.9
12 2 (all) 226.0 361.0 382.0 114.0 367.0 1450.0
这里,Day Avg 是 Ozone、Solar.R 和 Wind 的平均值 -- 不包括温度。
而 (all) 是 Ozone、Solar.R 和 Temp 的总和 -- 不包括风。
我认为这是dplyr 的另一种情况,这将是一个类似的解决方案,但我想我会问这两个问题。
编辑:值得一提的是,我的真实数据每个“天”有四个以上的变量,其中一些变量实际上并不是每天都出现,但仍然需要包含在每日“天平均”中,并且'(all)' 计算,因此按名称排除变量(即 Temp 或 Wind)而不是命名所有需要包含的变量(即。臭氧和Solar.R)。
【问题讨论】:
-
澄清:您希望 Wind 仍出现在摘要中,但不属于小计?
-
确实如此。每日小计代表一切贡献的总和,无风。 summarise() 仍然可以包含 Wind 和 Temp。