Группировать строки данных по дням - PullRequest
1 голос
/ 30 апреля 2020

У меня есть data.frame, df, с двумя переменными, date и y:

>df
                date      y
 2020-03-08 00:20:22  0.2713602
 2020-03-08 00:24:35 -0.1118034
 2020-03-09 14:56:00  0.2834734
 2020-03-09 23:41:37 -0.2687936
 2020-03-12 13:49:38  0.3535534
 2020-03-12 22:45:27 -0.2500000
 2020-03-12 22:46:45 -0.4596194

, такими, что:

> str(df)
'data.frame':   7 obs. of  2 variables:
$ date : POSIXct, format: "2020-03-08 00:20:22" "2020-03-08 00:24:35" ...
$ y: num  0.271 -0.112 0.283 -0.269 0.354 ...

Я бы хотел группировать строки по дням, усредняя соответствующие y значения, например что-то вроде этого

>result
       date      y
 2020-03-08  0.0797784
 2020-03-09  0.0073398
 2020-03-12 -0.1186887

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

С data.table:

library(data.table)
df[, .(y = mean(y)), by = as.Date(date)]
1 голос
/ 30 апреля 2020

Мы можем преобразовать 'date' в класс Date и использовать его в качестве переменной группировки, а затем сделать mean

library(dplyr)
df %>%
   group_by(date = as.Date(date)) %>%
   summarise(y = mean(y)) 

Или используя base R

aggregate(y ~ cbind(date = as.Date(date)), df, mean)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...