group-by - Group_by 仅返回一行,而聚合返回预期结果
问题描述
我目前被困在一些 EddyData 的后处理中。按照一个例子(https://github.com/bgctw/REddyProc/blob/master/vignettes/aggUncertainty.md)我想出了一个意外的结果,group_by
它是可重现的,但我不明白为什么。
Group_by 只返回一行,而聚合给出了预期的结果。
这是一个最小的例子:
library(tidyverse)
#create example data frame
date.time <- seq(from=as.POSIXct("2015-01-01 00:30:00"), to=as.POSIXct("2015-01-03 00:30:00"),by="30 mins")
nee <- runif(length(date.time),-200,200)
df <- data.frame(date.time, nee)
#calculate day of the year
df <- df %>% mutate(
date.time = df$date.time
, DoY = as.POSIXlt(date.time - 15*60)$yday # midnight belongs to the previous
)
#trying to summarise nee for each day
aggDay <- df %>% group_by(DoY) %>% summarise(nee=sum(nee))
aggDay
nee
1 322.1195
aggDay 只返回一行,而aggregate
在这种情况下可以工作
aggregate(df$nee, by=list(df$DoY), sum)
Group.1 x
1 0 -25.15698
2 1 448.13960
3 2 -100.86310
不幸的是,原始代码涉及一些进一步的计算,这就是我想继续使用group_by
.
#original code, not reproducible here
aggDay <- df %>% group_by(DoY) %>%
summarise(
DateTime = first(DateTime)
, nRec = sum( NEE_uStar_fqc == 0, na.rm = TRUE)
, nEff = computeEffectiveNumObs(
resid, effAcf = !!autoCorr, na.rm = TRUE)
, NEE = mean(NEE_uStar_f, na.rm = TRUE)
, sdNEE = if (nEff <= 1) NA_real_ else sqrt(
mean(NEE_uStar_fsd^2, na.rm = TRUE) / (nEff - 1))
, sdNEEuncorr = if (nRec == 0) NA_real_ else sqrt(
mean(NEE_uStar_fsd^2, na.rm = TRUE) / (nRec - 1))
)
解决方案
我重新启动了 RStudio,现在它可以工作了。不要问我。另一个加载的包一定有问题。
推荐阅读
- php - 值肯定在数组中,但它一直返回 false
- c# - Angular 5 和 .NET Core 2.1 API:获取用户时区的当前时间
- python-3.x - 主题建模、Gensim、Python、根据固定ID或关联数据获取主题模型
- c++ - 以特定格式快速解析原始数据
- c# - 由于非静态成员,无法编译用于设置图像活动/非活动的脚本
- windows - 无法在 Windows 10 上提取 Hadoop.tar.gz 文件
- javascript - 选择动态创建的元素
- c - 如何在c中实现通用链表
- docker - 如何在 docker swarm 中同时更新多个服务
- javascript - 擦除前几行画布