Извлекать объекты datetime из 2 фреймов данных и переформатировать их

#r #datetime

#r #datetime

Вопрос:

Допустим, у меня есть два фрейма данных, подобных этому.

 dateTime  temp
    1 10/25/2005 12:00:00  15.50
    2  10/25/2005 1:00:00  15.49
    3  10/25/2005 2:00:00  15.52
    4  10/25/2005 3:00:00  15.50
    5  10/25/2005 4:00:00  15.50
    6  10/25/2005 5:00:00  15.46


dput(head(test_dataset_1))
structure(list(`Open Date` = c("10/31/2019 08:21", "10/31/2019 08:21", 
"10/31/2019 08:21", "10/31/2019 08:21", "10/31/2019 08:21", "10/31/2019 08:21"
), `Close Date` = c(NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_), Symbol = c(NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_
), Action = c("Deposit", "Deposit", "Deposit", "Deposit", "Deposit", 
"Deposit"), `Units/Lots` = c(0.01, 0.01, 0.01, 0.01, 0.01, 0.01
), `Open Price` = c(0, 0, 0, 0, 0, 0), `Close Price` = c(0, 0, 
0, 0, 0, 0), Commission = c(0, 0, 0, 0, 0, 0), Swap = c(0, 0, 
0, 0, 0, 0), Pips = c(0, 0, 0, 0, 0, 0), Profit = c(16000, 8000, 
6000, 5000, 5000, 1617.55), Gain = c(0, 0, 0, 0, 0, 0), `Duration (DD:HH:MM:SS)` = c("00:00:00:00", 
"00:00:00:00", "00:00:00:00", "00:00:00:00", "00:00:00:00", "00:00:00:00"
), `Profitable(%)` = c(NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_), `Profitable(time duration)` = c(NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_
), Drawdown = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_), `Risk:Reward` = c(NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_), `Max(pips)` = c(NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_), `Max(USD)` = c(NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_), `Min(pips)` = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `Min(USD)` = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `Entry Accuracy(%)` = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `Exit Accuracy(%)` = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `ProfitMissed(pips)` = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `ProfitMissed(USD)` = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_)), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))
 

Как я могу извлечь столбцы с datetime и отформатировать их в DD-MM-YYYY HH:MM CET

Я попробовал что-то вроде:

 t1<-test_dataset_1 %>% select(which(sapply(.,is.datetime))) 
 

Комментарии:

1. можете ли вы добавить вывод dput(head(your_data)) ?

2. хорошо, я добавил это сейчас

Ответ №1:

Как насчет этого:

 library(lubridate)

is.mdy_hms <- function(x) all(!is.na(lubridate::mdy_hms(x, quiet = TRUE)))

test_dataset_1 <- purrr::modify_if(test_dataset_1, is.mdy_hms, mdy_hms)
 

обратите внимание, что теперь:

 class(test_dataset_1$`Open Date`)
#> [1] "POSIXct" "POSIXt"