Преобразование месячных данных в годовые данные в фрейме данных в r - PullRequest
0 голосов
/ 25 марта 2020

У меня есть фрейм данных, показывающий ежемесячный mgpp с 2000-2010:

dataframe1 
     Year Month       mgpp
  1: 2000     1 0.01986404
  2: 2000     2 0.011178429
  3: 2000     3 0.02662008
  4: 2000     4 0.05034293
  5: 2000     5 0.23491388
 ---                      
128: 2010     8 0.13234501
129: 2010     9 0.10432369
130: 2010    10 0.04329537
131: 2010    11 0.04343289
132: 2010    12 0.09494946

Я пытаюсь преобразовать этот фрейм data1 в растр, который покажет переменную mgpp. Однако сначала я хочу отформатировать фрейм данных, который будет показывать только годовой мгпп . Ожидаемый результат показан ниже:

dataframe1
     Year       mgpp
  1: 2000      0.01986704
  2: 2001      0.01578429
  3: 2002      0.02662328
  4: 2003      0.05089593
  5: 2004      0.07491388

6: 2005        0.11229201
7: 2006        0.10318569
8: 2007        0.07129537
9: 2008        0.04373689
10: 2009       0.02885386
11: 2010       0.74848348

Я хочу агрегировать месяцы по среднему значению. Например, значение 2000 показывает одно значение, которое является средним значением января-де c за 2000 год. Как мне этого добиться? Помощь будет оценена

1 Ответ

1 голос
/ 25 марта 2020

Здесь подход data.table.

library(data.table)
setDT(dataframe1)[,.(Yearly.mgpp = mean(mgpp)),by=Year]
   Year Yearly.mgpp
1: 2000  0.06858387
2: 2010  0.08366928

Или, если вы предпочитаете, dplyr.

library(dplyr)
dataframe1 %>% 
  group_by(Year) %>% 
  summarise(Yearly.mgpp = mean(mgpp))

# A tibble: 2 x 2
   Year Yearly.mgpp
  <dbl>       <dbl>
1  2000      0.0686
2  2010      0.0837

Или базовый R.

result <- sapply(split(dataframe1$mgpp,dataframe1$Year),mean)
data.frame(Year = as.numeric(names(result)),Yearly.mgpp = result)
     Year Yearly.mgpp
2000 2000  0.06858387
2010 2010  0.08366928

Пример данных

dataframe1 <- structure(list(Year = c(2000, 2000, 2000, 2000, 2000, 2010, 2010, 
2010, 2010, 2010), Month = c(1, 2, 3, 4, 5, 8, 9, 10, 11, 12), 
    mgpp = c(0.01986404, 0.011178429, 0.02662008, 0.05034293, 
    0.23491388, 0.13234501, 0.10432369, 0.04329537, 0.04343289, 
    0.09494946)), class = "data.frame", row.names = c(NA, -10L
))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...