我有一列日期写为月年,格式为: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函数可能仍然有效:
非常感谢您的帮助
我使用了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] 删除。
我来说两句