我有一个两部分的问题。在创建类似于我所拥有的数据集时,我们可以从空气质量数据集开始:
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。所以数据集看起来像这样:
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的平均值——不包括Temp。
并且(all)是Ozone、Solar.R和Temp的总和——不包括Wind。
我认为这是另一种情况dplyr
,这将是一个类似的解决方案,但我想我会问这两个问题。
编辑:值得一提的是,我的真实世界数据每天“每天”有四个以上的变量,其中一些变量实际上并不每天都出现,但仍然需要包含在每日“日平均”和“(所有)' 计算,因此按名称排除变量(即Temp或Wind)而不是命名所有需要包含的变量(即Ozone和Solar.R)会更干净。