Я пытаюсь использовать dplyr для запроса данных из psql. Мои данные находятся в следующем формате.Вниз выборка данных временных рядов в dplyr из Postgres DB
date name value
10-12-2012 10:01:00 var1 100
10-12-2012 10:55:00 var1 200
10-12-2012 11:01:00 var1 150
10-12-2012 11:50:00 var1 100
10-12-2012 12:11:00 var1 50
10-12-2012 12:40:00 var1 150
10-12-2012 10:01:00 var2 10
10-12-2012 10:33:00 var2 20
10-12-2012 11:04:00 var2 15
10-12-2012 11:45:00 var2 25
10-12-2012 12:02:00 var2 10
10-12-2012 12:55:00 var2 8
Хочет агрегировать данные в часовом (или предварительно определенное время выборки) и хочет среднее значения в столбце «значение» в течение этого часа.
Обязательный выход:
date name value
10-12-2012 10:00:00 var1 150
10-12-2012 11:00:00 var1 125
10-12-2012 12:00:00 var1 100
10-12-2012 10:00:00 var2 15
10-12-2012 11:00:00 var2 20
10-12-2012 12:00:00 var2 9
Я могу сделать это в Postgres непосредственно с помощью этого запроса:
"SELECT date_trunc('hour', date), name, mean_arr(array_agg(cast(value as double precision))) FROM TABLENAME WHERE name IN ("var1","var2")
Я хотел бы знать, если мы можем сделать то же самое с помощью dplyr.
я в настоящее время подключения к базе данных с помощью этой команды в dplyr:
my_db <- rc_postgres(dbname="DBNAME",host="HOST",port="PORT",user="USER",password="PASSWD")
tbl_df <- tbl(my_db, "TABLENAME")
Необработанные запрос состоит в следующем:
dataOut <- data.frame(tbl_df%>% select(date,name,value) %>% filter(name %in% c('var1','var2')
Обратите внимание, что я не агрегированных данных в настоящее время, которые я хочу сделать.
Дайте мне знать, если у кого-то есть ответ. Благодаря Прадипом
Привет, Хэдли, я получаю следующее сообщение об ошибке. Ошибка в eval (expr, envir, enc): не удалось найти функцию «трансмутировать». – Pradeep
Я не мог найти помощь для трансмутации в dplyr – Pradeep
@Pradeep - Я думаю, что Хэдли, возможно, имел в виду «трансмутировать» там. –