Извлечение месячных и годовых данных о температуре из файла ЧПУ - PullRequest
0 голосов
/ 28 января 2019

Я скачал файл ЧПУ с долгосрочными (1992-01-01 to 2016-12-31) данными о температуре. Я хочу извлечь средние месячные и годовые температуры, используя R, в пространственный файл TIFF, чтобы я мог затем извлечь данные о среднемесячной температуре внабор данных Excel у меня есть, но я понятия не имею, как.Доступ к данным можно получить по здесь .

Если кто-то может помочь мне с кодировкой, которая будет оценена.

С помощью этого кода я попытался открыть и просмотреть данные:

library(ncdf4)
library(raster)
temp <- nc_open("dataset-ibi-reanalysis-phys-005-002-monthly_1547718004288.nc",write=TRUE)


TEMP = ncvar_get(temp,"bottomT")

latitude = ncvar_get(temp,"latitude")
longitude = ncvar_get(temp,"longitude")
nc_close(temp)

1 Ответ

0 голосов
/ 28 января 2019

Если вы можете создать файл data.frame со столбцами даты и температуры, аналогично моему фиктивному набору данных ниже, вы можете легко использовать пакеты dplyr и lubridate для получения месячных и годовых значений.

ДобавитьСтолбцы месяца и года в df с использованием функции мутирования dplyr и lubridates функций месяца и года

library(lubridate)
library(dplyr)
df <- data.frame(date = seq(from = ymd("2017-01-01"), to = ymd("2018-12-31"), length.out = 730),
                 temp = rnorm(n = 730, mean = 23, sd = 12))

Добавление столбцов месяца и года к df с использованием функции мутирования dplyr и функций месяца и года lubridate

df <- df %>% mutate(Month = month(date), Year = year(date))

Первые шесть строк df:

# date     temp         Month Year
# 2017-01-01 17.13885     1 2017
# 2017-01-02 34.23553     1 2017
# 2017-01-03 10.25110     1 2017
# 2017-01-04 11.19415     1 2017
# 2017-01-05 28.09097     1 2017
# 2017-01-06 17.58424     1 2017

Месячные средние значения можно получить с помощью функции group_by dplyr, чтобы сгруппировать data.frame по месяцам и годам, а также функцию суммирования для вычисления средних.

monthly_summaries <- df %>% group_by(Year, Month) %>% 
  summarise(mean_temp = mean(temp))

Вот первые 6 строк в файле month_summaries data.frame

#   Year Month mean_temp
#  2017     1      22.1
#  2017     2      24.6
#  2017     3      20.5
#  2017     4      25.7
#  2017     5      21.3
#  2017     6      23.4

Аналогично, чтобы получить среднегодовые значения, используя функцию group_by для группировки по годам, и функцию суммирования для вычислениягодовой означает.

yearly_summaries <- df %>% group_by(Year) %>% 
  summarise(mean_temp = mean(temp))

А вот данные ежегодных сводок. Рамка:

#Year    mean_temp
#  2017      23.0
#  2018      23.1

(илиЕсли вы не хотите добавлять столбцы «Месяц» и «Год» в свой файл data.frame, вы можете получить тот же вывод, используя следующий код:

monthly_summaries <- df %>% group_by(Year = year(date), Month = month(date)) %>% 
    summarise(mean = mean(temp))
yearly_summaries <- df %>% group_by(Month = month(date)) %>% 
    summarise(mean = mean(temp))

)

...