Объедините 2 последовательных, но нерегулярных набора данных временных рядов с перекрывающимися рядами, исключая дублирование строк - PullRequest
0 голосов
/ 19 февраля 2019

Используя R, я пытаюсь объединить 2 последовательных, но нерегулярных набора данных временных рядов, используя те же поля, но с перекрывающимися строками;т. е. некоторые одинаковые транзакции появляются в обоих наборах данных, и я хочу устранить перекрывающиеся строки.

Поскольку временные интервалы нерегулярны, у меня могут быть допустимые идентичные строки в каждом наборе данных.В моих примерах наборов данных я хочу объединить строки с 1 по 12 из набора данных 1 со строками с 6 по 11 из набора данных 2, чтобы получить желаемый результат.В этом примере ясно, что строки с 1 по 5 в наборе данных 2 совпадают со строками с 8 по 12 в наборе данных 1. Я пробовал использовать функцию unique (), но она также удаляет идентичные допустимые строки.Любые идеи о том, как решить эту дилемму?

Набор данных 1

1  2019-02-19 15:17:14 25886    1                           
2  2019-02-19 15:17:14 25886    1                           
3  2019-02-19 15:17:15 25885    1                           
4  2019-02-19 15:17:16 25886    2                           
5  2019-02-19 15:17:16 25886    1                           
6  2019-02-19 15:17:16 25886    2                           
7  2019-02-19 15:17:16 25886    1                           
8  2019-02-19 15:17:18 25885    4                           
9  2019-02-19 15:17:19 25885    1  
10 2019-02-19 15:17:19 25885    1                            
11 2019-02-19 15:17:20 25885    2                           
12 2019-02-19 15:17:21 25885    1                           

Набор данных 2

1  2019-02-19 15:17:18 25885    4                           
2  2019-02-19 15:17:19 25885    1  
3  2019-02-19 15:17:19 25885    1                          
4  2019-02-19 15:17:20 25885    2                           
5  2019-02-19 15:17:21 25885    1                           
6  2019-02-19 15:17:23 25886    2                           
7  2019-02-19 15:17:23 25886    3                           
8  2019-02-19 15:17:23 25886    3                           
9  2019-02-19 15:17:23 25886    1                           
10 2019-02-19 15:17:23 25886    1                           
11 2019-02-19 15:17:23 25886    2 

Мой желаемый результат:

1  2019-02-19 15:17:14 25886    1                           
2  2019-02-19 15:17:14 25886    1                           
3  2019-02-19 15:17:15 25885    1                           
4  2019-02-19 15:17:16 25886    2                           
5  2019-02-19 15:17:16 25886    1                           
6  2019-02-19 15:17:16 25886    2                           
7  2019-02-19 15:17:16 25886    1                           
8  2019-02-19 15:17:18 25885    4                           
9  2019-02-19 15:17:19 25885    1   
10 2019-02-19 15:17:19 25885    1                             
11 2019-02-19 15:17:20 25885    2                           
12 2019-02-19 15:17:21 25885    1                      
13 2019-02-19 15:17:23 25886    2                           
14 2019-02-19 15:17:23 25886    3                           
15 2019-02-19 15:17:23 25886    3                           
16 2019-02-19 15:17:23 25886    1                           
17 2019-02-19 15:17:23 25886    1                           
18 2019-02-19 15:17:23 25886    2 

Вот набор данных 1

structure(list(time = structure(c(1550589434, 1550589434, 1550589435, 
1550589436, 1550589436, 1550589436, 1550589436, 1550589438, 1550589439, 
1550589439, 1550589440, 1550589441), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), price = c(25886, 25886, 25885, 25886, 25886, 
25886, 25886, 25885, 25885, 25885, 25885, 25885), size = c(1, 
1, 1, 2, 1, 2, 1, 4, 1, 1, 2, 1)), row.names = c("1", "2", "3", 
"4", "5", "6", "7", "8", "9", "10", "11", "12"), class = "data.frame")

Вот набор данных 2

structure(list(time = structure(c(1550589438, 1550589439, 1550589439, 
1550589440, 1550589441, 1550589443, 1550589443, 1550589443, 1550589443, 
1550589443, 1550589443), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
price = c(25885, 25885, 25885, 25885, 25885, 25886, 25886, 
25886, 25886, 25886, 25886), size = c(4, 1, 1, 2, 1, 2, 3, 
3, 1, 1, 2)), row.names = c("1", "2", "3", "4", "5", "6", 
"7", "8", "9", "10", "11"), class = "data.frame")

1 Ответ

0 голосов
/ 19 февраля 2019

Одна идея будет:

library(dplyr)

df2 %>%
  anti_join(df1) %>%
  bind_rows(df1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...