Я пытался агрегировать (некоторые беспорядочные) ежедневные данные. Я на самом деле работаю с данными 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), как я могу автоматически указать их как числовые? (stringAsFactors = False
не работает?)