如何解决如何使用as.Date转换字符串但显示为dd / mm / yyyy
抱歉,我似乎无法找到这个看似基本的问题的解决方案。
此
p %>% mutate(date = as.Date(mr_daterd,format = '%d/%m/%Y'),mr_daterd = mr_daterd)
给予
mr_daterd date
1 28/03/2013 2013-03-28
2 10/01/2009 2009-01-10
3 16/09/2005 2005-09-16
4 28/03/2013 2013-03-28
5 28/03/2013 2013-03-28
6 28/03/2013 2013-03-28
我需要p$date
是dd/mm/yyyy
。
p <- structure(list(mr_daterd = c("18/03/2011","10/01/2009","11/03/2004","18/03/2011","16/09/2005","28/03/2013 ","10/01/2009")),row.names = c(NA,-15L),class = "data.frame")
解决方法
实现所需目标的一种方法是创建自己的S3类。这并不像听起来那么困难,只需要两行代码:
as.myDate <- function(x,...) `class<-`(as.Date(x,...),c("myDate","Date"))
format.myDate <- function(x,...) format(`class<-`(x,"Date"),"%d/%m/%Y")
然后,您可以这样做:
p$date <- as.myDate(p$mr_daterd,format = "%d/%m/%Y")
p
#> mr_daterd date
#> 1 18/03/2011 18/03/2011
#> 2 10/01/2009 10/01/2009
#> 3 10/01/2009 10/01/2009
#> 4 11/03/2004 11/03/2004
#> 5 10/01/2009 10/01/2009
#> 6 18/03/2011 18/03/2011
#> 7 16/09/2005 16/09/2005
#> 8 10/01/2009 10/01/2009
#> 9 18/03/2011 18/03/2011
#> 10 10/01/2009 10/01/2009
#> 11 18/03/2011 18/03/2011
#> 12 18/03/2011 18/03/2011
#> 13 28/03/2013 28/03/2013
#> 14 28/03/2013 28/03/2013
#> 15 10/01/2009 10/01/2009
此新类继承了“日期”中的所有其他通用函数,因此其行为仍与Date对象相同:
difftime(p$date[2],p$date[1])
#> Time difference of -797 days
plot(p$date,rnorm(15))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。