Преобразуйте строку в даты с помощью R - PullRequest
4 голосов
/ 09 июля 2020

У меня есть столбец дат, записанный как месяц-год в формате: 11960 - это будет январь 1960 года, 121960 - это будет De c 1960

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

Я пробовал (используя одно число в качестве примера, а не dt $ dob)

x <- sprintf ("% 08d% ", 11960), а затем x <- as.date (x, format ="% d% m% Y) </p>

, но это дает мне NA, поскольку я предполагаю, что ему не нравится 00 в start

Итак, я попытался вставить 01 в каждое значение, но это вставляет его до конца (R noob здесь). Я подумал, может быть, отправка 01 в начало, а затем использование функции sprintf все еще может работать:

  • вставьте 01 в начало 11960 = 011960
  • sprintf ("% 08d%", 011960), чтобы получить 0101960?
  • Затем используйте as.Date для преобразования?

Большое спасибо за вашу помощь

1 Ответ

2 голосов
/ 09 июля 2020

Я использовал paste0 () вместо sprintf, но, похоже, он работает.

> x<-paste0("010",11960)
> x
[1] "01011960"
> as.Date(x , format = "%d%m%Y" )
[1] "1960-01-01"


EDIT для 2 di git месяцев, я использую ifelse () и nchar ()

y<-c(11960,11970,11980, 111960,111970,111980)
x<-ifelse(nchar(y) == 5,paste0("010",y),paste0("01",y))

> x
[1] "01011960" "01011970" "01011980" "01111960" "01111970" "01111980"

as.Date(x , format = "%d%m%Y" )
[1] "1960-01-01" "1970-01-01" "1980-01-01" "1960-11-01" "1970-11-01" "1980-11-01"

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