2017-01-31 2 views
1

У меня есть файл данных .nc, который содержит ежедневные данные о температуре за полный период в одном столбце. Временная переменная имеет 365-дневный календарь (без високосного года). Я хочу рассчитать ежемесячные/ежегодные значения среднего/максимального/минимального значения. Как использовать as.date для 365 дней каландра?Как создать последовательность дат для разных календарей (365 дней) в R?

d<- seq(as.Date("2071-01-01"), as.Date("2099-12-31"),1) 

Приведенный выше код создает последовательность, но включает в себя и високосный год.

+0

Я думаю, вам нужно извлечь «год» от «D», а затем использовать в качестве группировки переменная. то есть 'library (dplyr), data.frame (d)%>% group_by (year = format (d,"% Y "))%>% суммировать (min = min (d), max = max (d))' – akrun

+0

d - это последовательность дат, а не серия данных. Я хочу рассчитывать ежегодно min/max моих данных, используя «d». –

+0

Я не знаю, что у вас там есть, поэтому используйте группу с 'format''% Y% ', а затем получите min, max другой переменной – akrun

ответ

1

Я не уверен, что это самый приятный способ сделать это. Я бы удалил все 29 февраля из последовательности.

d <- d[!grepl(x = d, pattern = "-02-29$")] 
+0

спасибо за помощь –

1

Не уверен, хотите ли вы удалить все високосные годы или удалить только FEB 29S

x<-seq(as.Date("2011-01-01"),as.Date("2016-03-01"),by="day") 
is.leapyear=function(year) return(((year %% 4 == 0) & (year %% 100 != 0)) | (year %% 400 == 0)) 
#remove all dates in leap years 
x[!is.leapyear(as.integer(format(x, "%Y")))] 

#remove all feb 29s 
x[format(x,"%m-%d") != "02-29"] 
+0

привет, водопровод, во второй строке "(год %% 100! = 0)", в чем же необходимость? –

+0

https://en.wikipedia.org/wiki/Leap_year#Algorithm – Jean

+0

ОК, спасибо. –

Смежные вопросы