Фильтруйте и присоединяйте data.frame на основе других data.frame - PullRequest
0 голосов
/ 05 июля 2018

У меня есть имя данных температуры = "dlr_rms", которое имеет 1208783 записей и дату-время для этих записей, и я должен найти абсолютную ошибку для этих данных, в основном у меня есть другая таблица, называемая "абсолютными значениями", которая имеет 21072 значения температуры , И я хочу вычесть эти значения из моих предыдущих данных в соответствии с общей или сгруппированной датой и временем.

Например (df1):

temp  date-time                     
2     2015-07-14 16:44:01      
3     2015-07-14 16:44:01  
4     2016-08-14 16:44:02
8     2016-08-14 16:44:02
5     2017-09-14 16:44:03    
6     2017-09-14 16:44:03  

df2:

absolute table    date-time
2                 2015-07-14 16:44:01
5                 2016-08-14 16:44:02 
9                 2017-09-14 16:44:03

Я хочу, чтобы значения общей даты и времени, такие как (2,3) (4,8) (5,6), вычитались из того же числа, которое им присвоено в таблице абсолютных значений. Мне также нужно объединить разные таблицы, чтобы добиться вычисления ошибок

Таблица желаемых результатов

2-2=0
3-2=1

4-5= -1
8-5= 3

5-9 =-4
6-9 = -3

вывод команд dput: df1:

1515434400, 1515438000, 1515452400, 1515456000, 1515459600, 1515463200, 1515466800, 1515470400, 1515474000, 1515477600, 1515481200), класс = c ("POSIXct", "POSIXt"), tzone = "UTC")), класс = "data.frame", row.names = c (NA, -21072L))

1 Ответ

0 голосов
/ 05 июля 2018

Мы можем сделать это с dplyr и tidyr:

library(dplyr)
library(tidyr)

df1 %>%
  left_join(df2, by = "date_time") %>%
  mutate(absolute_error = temp-absolute)

Результат:

  temp           date_time absolute absolute_error
1    2 2015-07-14 16:44:01        2              0
2    3 2015-07-14 16:44:01        2              1
3    4 2016-08-14 16:44:02        5             -1
4    8 2016-08-14 16:44:02        5              3
5    5 2017-09-14 16:44:03        9             -4
6    6 2017-09-14 16:44:03        9             -3

Данные:

df1 = structure(list(temp = c(2L, 3L, 4L, 8L, 5L, 6L), date_time = structure(c(1L, 
1L, 2L, 2L, 3L, 3L), .Label = c("2015-07-14 16:44:01", "2016-08-14 16:44:02", 
"2017-09-14 16:44:03"), class = "factor")), .Names = c("temp", 
"date_time"), class = "data.frame", row.names = c(NA, -6L))

df2 = structure(list(absolute = c(2L, 5L, 9L), date_time = structure(1:3, .Label = c("2015-07-14 16:44:01", 
"2016-08-14 16:44:02", "2017-09-14 16:44:03"), class = "factor")), .Names = c("absolute", 
"date_time"), class = "data.frame", row.names = c(NA, -3L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...