Я пытаюсь сделать что-то, что кажется простым, но оказалось немного сложной задачей, поэтому я надеюсь, что кто-то может помочь!
У меня есть временной ряд наблюдений температуры:Различия значений, основанных на средних месяцах и данных о прокате
Lines <-"1971-01-17 298.9197
1971-01-17 298.9197
1971-02-16 299.0429
1971-03-17 299.0753
1971-04-17 299.3250
1971-05-17 299.5606
1971-06-17 299.2380
2010-07-14 298.7876
2010-08-14 298.5529
2010-09-14 298.3642
2010-10-14 297.8739
2010-11-14 297.7455
2010-12-14 297.4790"
DF <- read.table(textConnection(Lines), col.names = c("Date", "Value"))
DF$Date <- as.Date(DF$Date)
mean.ts <- aggregate(DF["Value"], format(DF["Date"], "%m"), mean)
Это дает:
> mean.ts
Date Value
1 01 1.251667
2 02 1.263333
Это просто пример - мои данные в течение многих лет, так что я могу вычислить полный среднемесячный данных.
То, что я тогда хочу сделать, это рассчитать разницу для всех январских (индивидуально) со средним январем, который я рассчитал выше.
Если я уйду от использования класса Date/Time, я мог бы сделать это с помощью некоторых циклов, но я хочу посмотреть, есть ли «аккуратный» способ сделать это в R? Есть идеи?
Я немного очистил ваш код, но не могу получить то, что вы говорите, что 'mean.ts' (т.е. значения чуть более 1). – James
Маленький наконечник. Начиная с 2.14, 'read.table' имеет аргумент' text'. –
Вы могли бы также использовать 'as.POSIXlt (DF [[" Date "]]) $ mon', хотя 'format' все еще проще IMO. –