使用R将字符串转换为日期

他克莫司

我有一列日期写为月年,格式为:11960-这将是1960年1月121960-这将是1960年12月

我想将此列转换为日-月-年格式,并假设每个月的第一天为日期。

我已经尝试过(以一个数字为例,而不是dt $ dob)

x <-sprintf(“%08d%”,11960),然后x <-as.date(x,format =“%d%m%Y)

但这给了我NA,因为我认为它不喜欢一开始的00

因此,我尝试将01粘贴到每个值,但这会将其粘贴到末尾(此处为R noob)。我在想,也许一开始就发布01,然后使用sprintf函数可能仍然有效:

  • 粘贴01到11960开始= 011960
  • sprintf(“%08d%”,011960)可能会给0101960?
  • 然后使用as.Date进行转换?

非常感谢您的帮助

用户名

我使用了paste0()而不是sprintf,但似乎可行。

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


编辑2位数的月份,我使用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"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章