R - средний расчет с использованием group_by на основе столбца Дата? - PullRequest
1 голос
/ 28 сентября 2019

* Перед публикацией я прошел этот пост, но он НЕ работал для формата даты, как я имел в моих данных:

Использование R & dplyr для подведения итогов - group_by, count, mean,sd *

---------------------------------------------------------------------

Что у меня есть:

У меня есть фрейм данных с двумя столбцами (т. Е. «Дата» и «Среднее»), в котором содержатся среднесуточные осадки за 5 лет.

Вот верх и хвост этого фрейма данных:

> head(years_nc)
    Date    Average
1 2010-01-01 0.00207909
2 2010-01-02 0.00207909
3 2010-01-03 0.00207909
4 2010-01-04 0.00207909
5 2010-01-05 0.00207909
6 2010-01-06 0.00207909

> tail(years_nc)
          Date     Average
3334271 2014-12-26 0.004983558
3334272 2014-12-27 0.004983558
3334273 2014-12-28 0.004983558
3334274 2014-12-29 0.004983558
3334275 2014-12-30 0.004983558
3334276 2014-12-31 0.004983558

Чтобы прояснить ситуацию, вы можете загрузить этот фрейм данных:

https://www.dropbox.com/s/7wozzxvu6uckqsu/MyData.csv?dl=1

Моя цель:

Iя пытаюсь составить среднее значение для столбца «Среднее» для каждого года отдельно.

Это мой код для этого:

library(dplyr)
library(lubridate)

years_nc %>%
  group_by(Date) %>%
  summarize(avg_preci = mean(Average, na.rm = TRUE))

Возвращает только одно значение:

> 
   avg_preci
1 0.00195859

Но я хочу, чтобы R:

(a) составлял группу для каждого года;

(b) затем вычислял среднее значение среднего количества осадков вежегодно для меня.

Вдругими словами, у меня должно быть 5 средних значений;одно значение в год.

В чем моя ошибка в коде?

Может кто-нибудь помочь мне с этой проблемой?

Спасибо.

1 Ответ

2 голосов
/ 28 сентября 2019

Ты почти на правильном пути.Сначала убедитесь, что ваш столбец Date действительно date.Затем, когда вы делаете группировку, делайте это по year, но не по ymd, который находится в вашем фрейме данных.Сценарий может быть изменен следующим образом.

years_nc$Date <- ymd(years_nc$Date)

years_nc %>%
  group_by(year(Date)) %>%
  summarize(avg_preci = mean(Average, na.rm = TRUE))
# #A tibble: 5 x 2
#     `year(Date)` avg_preci
#           <dbl>     <dbl>
# 1         2010   0.00196
# 2         2011   0.00196
# 3         2012   0.00196
# 4         2013   0.00196
# 5         2014   0.00196
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...