Форматирование двух разных фреймов данных с помощью POSIXct для left_join () - ing - PullRequest
1 голос
/ 28 марта 2019

Я довольно новичок в R, и я бы хотел left_join() следующие два набора данных:

> head(datagps)
   Date & Time [Local]  Latitude Longitude            DateTime    meters
1:    18/06/2018 03:16 -2.434613  34.85372 2018-06-18 03:16:00 12.036834
2:    18/06/2018 03:20 -2.434511  34.85376 2018-06-18 03:20:00 18.738134
3:    18/06/2018 03:24 -2.434503  34.85393 2018-06-18 03:24:00 26.781879
4:    18/06/2018 03:28 -2.434719  34.85382 2018-06-18 03:28:00  8.341659
5:    18/06/2018 03:33 -2.434718  34.85375 2018-06-18 03:33:00 11.332758
6:    18/06/2018 03:36 -2.434817  34.85377 2018-06-18 03:36:00 15.736907
> head(datasensorraw)
# A tibble: 6 x 4
  TimeGroup               x     y     z
  <dttm>              <int> <int> <dbl>
1 2018-06-09 04:48:00     3     5  5.83
2 2018-06-09 04:52:00     0     0  0   
3 2018-06-09 04:56:00    29    31 42.8 
4 2018-06-09 05:00:00    10     5 11.2 
5 2018-06-09 05:04:00     2    10 10.2 
6 2018-06-09 05:08:00     0     0  0 

Однако один из них имеет формат POSIXct, а другой - нет, так как я попробовал код:

> dataresults<-left_join(datagps, datasensorraw, by = c("Date & Time [Local]" = "TimeGroup"))
Error in left_join_impl(x, y, by_x, by_y, aux_x, aux_y, na_matches) : 
  cannot join a POSIXct object with an object that is not a POSIXct object

Как узнать, какой из двух форматов POSIXct и как отформатировать другой, чтобы я мог left_join() успешно? Я смотрел на другие примеры, но не могу понять, когда нужно использовать - или /.

Любой вклад приветствуется!

1 Ответ

1 голос
/ 28 марта 2019

Это потому, что первый столбец набора данных Date & Time [Local] не является классом DateTime.Преобразование в POSIXct решит проблему

library(dplyr)
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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...