【发布时间】:2010-09-01 17:21:22
【问题描述】:
我一直在尝试汇总(有些不稳定的)每日数据。我实际上正在使用 csv 数据,但如果我重新创建它 - 它看起来像这样:
library(zoo)
dates <- c("20100505", "20100505", "20100506", "20100507")
val1 <- c("10", "11", "1", "6")
val2 <- c("5", "31", "2", "7")
x <- data.frame(dates = dates, val1=val1, val2=val2)
z <- read.zoo(x, format = "%Y%m%d")
现在我想每天汇总一下(请注意,有时一天有 >1 个数据点,有时没有。
我已经尝试了很多很多变化,但我似乎无法汇总,所以例如这失败了:
aggregate(z, as.Date(time(z)), sum)
# Error in Summary.factor(2:3, na.rm = FALSE) : sum not meaningful for factors
似乎有很多关于聚合的内容,我尝试了许多版本,但似乎无法在日常水平上总结这一点。除了每日求和之外,我还想运行 cummax 和累积平均值。
任何帮助都将不胜感激。
更新
我实际使用的代码如下:
z <- read.zoo(file = "data.csv", sep = ",", header = TRUE, stringsAsFactors = FALSE, blank.lines.skip = T, na.strings="NA", format = "%Y%m%d");
我对上述数字的(无意)引用似乎与实践中发生的情况相似,因为当我这样做时:
aggregate(z, index(z), sum)
#Error in Summary.factor(25L, na.rm = FALSE) : sum not meaningful for factors
有很多列(100 左右),我怎样才能将它们指定为 as.numeric 自动? (stringAsFactors = False 似乎不起作用?)
【问题讨论】: