在R中使用subdaily2daily进行日聚合报错的解决方法
解决日聚合报错的方法
报错原因
这个'length = 2' in coercion to 'logical(1)'错误,是因为你给subdaily2daily函数的dates参数传了数字1,函数内部的判断逻辑不接受这种传值方式,导致类型不匹配引发了问题。
修复方案
方法1:直接指定Date列名
不要用数字1,改用字符串形式的列名"Date",让函数能精准定位时间列:
dataset$Date <- ymd_hms(dataset$Date) dailydata <- subdaily2daily(dataset, FUN=mean, na.rm=T, dates="Date")
方法2:先转成纯日期格式(更稳妥)
因为你的Date列是带时分秒的datetime格式,先转成只保留年月日的纯日期列,再执行聚合:
dataset$Date <- ymd_hms(dataset$Date) dataset$daily_date <- as.Date(dataset$Date) dailydata <- subdaily2daily(dataset, FUN=mean, na.rm=T, dates="daily_date")
方法3:换用dplyr实现(通用避坑)
如果subdaily2daily还是有问题,用更常用的dplyr包来完成日聚合,兼容性更强:
library(dplyr) dataset$Date <- ymd_hms(dataset$Date) dailydata <- dataset %>% # 生成仅含年月日的分组列 mutate(daily_date = as.Date(Date)) %>% # 按日期分组 group_by(daily_date) %>% # 对所有列计算均值,忽略NA值 summarise(across(everything(), mean, na.rm = TRUE))
内容的提问来源于stack exchange,提问作者Adriana Sumba
相关产品推荐
相关产品推荐

