Как изменить значения даты? - PullRequest
1 голос
/ 06 марта 2019

Как я могу изменить необработанные значения даты.Например.

> DF2
  Date     
1 11012018  
2 7312014  
3 6102015
4 10202017  

В измененные значения даты одно с "/"

> DF2
  Date     
1 11/01/2018  
2 7/31/2014  
3 6/10/2015
4 10/20/2017 

Ответы [ 3 ]

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

Мы также могли бы использовать (предполагается, что вам просто нужно добавить новый разделитель. В любом случае, вы можете преобразовать обратно в тип даты-времени):

new<-gsub("([0-9]{,2})([0-9]{2})([0-9]{4})","\\1 \\2 \\3",df$Date)
gsub(" ","/",new)
#[1] "11/01/2018" "7/31/2014"  "6/10/2015"  "10/20/2017" 

Редактировать: В целом, как предложено @ jay.sf,

test4<-gsub("(^[0-1]?\\d)([0-3]?\\d)(\\d{4}$)","\\1 \\2 \\3",df$Date)
gsub(" ","/",test4)
#[1] "11/01/2018" "7/31/2014"  "6/10/2015"  "10/20/2017"

Это относится к таким форматам даты, как:

test3<-c("11012018", "1112015", "7312014", "7312014", "10202017", "772007", "772007", 
         "7072007")
1 голос
/ 06 марта 2019

Используйте lubridate для всех задач, связанных с датой и временем

> lubridate::mdy(c("11012018", "7/31/2014"))
[1] "2018-11-01" "2014-07-31"

Вы также можете format при необходимости:

format(lubridate::mdy(c("11012018", "7/31/2014")), "%m/%d/%Y")
[1] "11/01/2018" "07/31/2014"

Предполагается: ваша дата указана в формате месяц-дата-год. В противном случае вы можете использовать другие lubridate функции

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

Одним из возможных решений может быть:

df <- transform(df, V1 = as.Date(as.character(V1), "%d%m%Y"))

И еще одно, которое может конвертировать в требуемый формат мм / дд / гггг, выглядит следующим образом:

df <- data.frame(lapply(df, function(x) as.Date(as.character(x), "%m%d%Y")))

Оба решения являются сквознымибазовый пакет R.

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