Нежелательный вывод, когда left_join () с метками времени с метками времени в R - PullRequest
1 голос
/ 28 марта 2019

Я не могу понять, почему мой код обеспечивает нежелательный вывод, так как я пробовал это в прошлом с похожими наборами данных и хорошими результатами.

Ниже приведены два кадра данных, которые я хотел бы left_join():

> head(datagps)
   Date & Time [Local]  Latitude Longitude            DateTime   meters
1:    06/11/2018 08:44 -2.434986  34.85387 2018-11-06 08:44:00 1.920190
2:    06/11/2018 08:48 -2.434993  34.85386 2018-11-06 08:48:00 3.543173
3:    06/11/2018 08:52 -2.435014  34.85388 2018-11-06 08:52:00 1.002979
4:    06/11/2018 08:56 -2.435011  34.85389 2018-11-06 08:56:00 3.788024
5:    06/11/2018 09:00 -2.434986  34.85387 2018-11-06 09:00:00 1.262584
6:    06/11/2018 09:04 -2.434994  34.85386 2018-11-06 09:04:00 3.012679
> head(datasensorraw)
# A tibble: 6 x 4
  TimeGroup               x     y     z
  <dttm>              <int> <int> <dbl>
1 2000-01-01 00:04:00     0     0   0  
2 2000-01-01 00:08:00     1     0   1  
3 2000-01-01 00:12:00     0     0   0  
4 2000-01-01 00:20:00     0     0   0  
5 2000-01-01 00:24:00     0     0   0  
6 2018-06-09 05:04:00     4    14  14.6

А ниже мой код.Errors нет, но по какой-то причине я получаю NA под x, y и z.Этого не должно происходить, поскольку в кадре данных datasensorraw имеются зарегистрированные значения для этих отметок времени:

> library(dplyr)
> dataresults<-datagps %>% 
+   mutate(`Date & Time [Local]` = as.POSIXct(`Date & Time [Local]`, 
+                                             format = "%d/%m/%Y %H:%M")) %>%
+   left_join(datasensorraw, by = c("Date & Time [Local]" = "TimeGroup"))
> #Left join the data frames
> head(dataresults)
  Date & Time [Local]  Latitude Longitude            DateTime   meters  x  y  z
1 2018-11-06 07:44:00 -2.434986  34.85387 2018-11-06 08:44:00 1.920190 NA NA NA
2 2018-11-06 07:48:00 -2.434993  34.85386 2018-11-06 08:48:00 3.543173 NA NA NA
3 2018-11-06 07:52:00 -2.435014  34.85388 2018-11-06 08:52:00 1.002979 NA NA NA
4 2018-11-06 07:56:00 -2.435011  34.85389 2018-11-06 08:56:00 3.788024 NA NA NA
5 2018-11-06 08:00:00 -2.434986  34.85387 2018-11-06 09:00:00 1.262584 NA NA NA
6 2018-11-06 08:04:00 -2.434994  34.85386 2018-11-06 09:04:00 3.012679 NA NA NA

Я также могу загрузить небольшую dput() выборку datagps иdatasensorraw.

Я изучаю R, поэтому мне интересно, делаю ли я что-то не так.Я не должен получать NA s под этими столбцами, как вы можете видеть на предоставленных dput() образцах.Любой вклад приветствуется!

1 Ответ

0 голосов
/ 28 марта 2019

Похоже на путаницу в вашем формате даты. Попробуйте переключить format = "%d/%m/%Y %H:%M" на format = "%m/%d/%Y %H:%M" или переключить его на d / m / y в другом наборе данных.

dataresults<- datagps_sample %>% 
  mutate(`Date & Time [Local]` = as.POSIXct(`Date & Time [Local]`, format = "%m/%d/%Y %H:%M")) %>%
  left_join(datasensorraw_sample, by = c("Date & Time [Local]" = "TimeGroup"))

> head(dataresults)

  Date & Time [Local]  Latitude Longitude            DateTime   meters   x   y         z
1 2018-06-11 12:44:00 -2.434986  34.85387 2018-11-06 08:44:00 1.920190  17  12  21.59363
2 2018-06-11 12:48:00 -2.434993  34.85386 2018-11-06 08:48:00 3.543173   6   0   6.00000
3 2018-06-11 12:52:00 -2.435014  34.85388 2018-11-06 08:52:00 1.002979  47  25  53.24351
4 2018-06-11 12:56:00 -2.435011  34.85389 2018-11-06 08:56:00 3.788024   0   0   0.00000
5 2018-06-11 13:00:00 -2.434986  34.85387 2018-11-06 09:00:00 1.262584  48  53  72.23108
6 2018-06-11 13:04:00 -2.434994  34.85386 2018-11-06 09:04:00 3.012679 139 113 179.24589

РЕДАКТИРОВАТЬ: в основном, left_join не нашел совпадений, и он возвращал строки из вашего исходного кадра данных, но с новыми столбцами как NA. Если вы отформатируете свой столбец до присоединения слева, вы можете проверить, есть ли общие идентификаторы с чем-то простым, например datagps$Date & Time [Local]% в% datasensorraw$TimeGroup.

...