Перекодируйте «переменную даты и времени» в две отдельные переменные - PullRequest
0 голосов
/ 25 апреля 2020

Я аспирант (не очень опытный в R), и я пытаюсь перекодировать строковую переменную, называемую RecordedDate, в две отдельные переменные: переменную Date и переменную Time. Я использую RStudio.

Примером значений являются:

8/6/2018 18:56
7/26/2018 10:43
7/28/2018 8:36  

Я бы хотел, чтобы первая часть значения (пример: 08/6/2018) переформатировала это в переменную даты, а вторая часть значения (пример: 18:56) во временную переменную.

  1. Я думаю, что первым шагом будет создание кода, который может разбить его на две переменные, основываясь на каком-то правиле. Я думаю, может быть, я смогу разделить все до «пробела» в переменную Date и после «пробела» в переменной Time. Я не могу понять это.

  2. Затем я ищу код, который изменит переменную Date из переменной " string " на " date " переменная типа Я не уверен, что это правильно, но я думаю что-то вроде: better_date <- as.Date(Date, "%m/%d/%Y")

  3. Наконец, тогда я хотел бы изменить переменную Time на "time" msgstr "формат типа (если он существует). Не уверен, как сделать эту часть, но что-то, что указывает часы и минуты. Эта часть менее важна, чем получение переменной даты.

1 Ответ

1 голос
/ 25 апреля 2020

Два непосредственных пути:

  1. strsplit() в пустом пространстве

  2. Надлежащие способы: проанализировать, а затем отформатировать обратно.

Только 2. гарантирует, что вы не закончите с часом 27 или минутой 83 ...

Примеры:

R> data <- c("8/6/2018 18:56", "7/26/2018 10:43", "7/28/2018 8:36")
R> strsplit(data, " ")
[[1]]
[1] "8/6/2018" "18:56"   

[[2]]
[1] "7/26/2018" "10:43"    

[[3]]
[1] "7/28/2018" "8:36"     

R> 

И:

R> data <- c("8/6/2018 18:56", "7/26/2018 10:43", "7/28/2018 8:36")
R> df <- data.frame(data)
R> df$pt <- anytime::anytime(df$data)   ## anytime package used
R> df$time <- format(df$pt, "%H:%M")
R> df$day <- format(df$pt, "%Y-%m-%d")
R> df
             data                  pt  time        day
1  8/6/2018 18:56 2018-08-06 18:56:00 18:56 2018-08-06
2 7/26/2018 10:43 2018-07-26 10:43:00 10:43 2018-07-26
3  7/28/2018 8:36 2018-07-28 00:00:00 00:00 2018-07-28
R> 

Я часто собираю данные в data.frame (или data.table), а затем добавляю столбец за столбцом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...