首页 > 代码库 > R语言学习笔记——日期时间处理
R语言学习笔记——日期时间处理
一、在利用R语言实际工作中,我们经常需要将字符串转换成时间,或者将时间转化成字符串,R语言和其他语言一样,你要告诉它如何转化?也就是告诉它format,它就可以正常的转化,但是在实际中,我碰到了一下几个很难注意的问题,先总结如下:
计算机如何理解日期:日期格式(也就是Date)表示为自1970年1月1日相对的数量,较1970-01-01更早的日期表示负值。(大部分语言都是这么处理的)
大部分语言有默认的日期格式,只要按照这个日期格式去转换字符串,计算机就能正确识别。如下:
<span style="font-size:18px;"># use as.Date( ) to convert strings to dates mydates <- as.Date(c("2007-06-22", "2004-02-13"))# number of days between 6/22/07 and 2/13/04 days <- mydates[1] - mydates[2]</span>
可见,R语言默认的日期格式是2007-06-22这种。
二、下面看一下,R语言的format怎么表示:
<span style="font-size:18px;">Sys.Date( ) returns today's date. date() returns the current date and time. </span>
下面的格式是用给format函数的:但是不只是用给它,在R里面涉及到format的地方通用,比如strptime,strftime等
Symbol | Meaning | Example |
%d | day as a number (0-31) | 01-31 |
%a %A | abbreviated weekday unabbreviated weekday | Mon Monday |
%m | month (00-12) | 00-12 |
%b %B | abbreviated month unabbreviated month | Jan January |
%y %Y | 2-digit year 4-digit year | 07 2007 |
但是,请注意%d,%b指的是当地时间,所以如果你的计算机当地时间是中国,那么下面的语句结果会是这样:
<span style="font-size:18px;">> as.Date('22JUN01',format='%d%b%y')[1] NA> as.Date('April 26, 2001',format='%B %d, %Y')[1] NA</span>
错的很惨很惨,怎么办?下面两种解决方法:
一、修改数据
<span style="font-size:18px;">> as.Date('十一月 26, 2001',format='%B %d, %Y')[1] "2001-11-26"> as.Date('十一月 26, 2001',format='%b %d, %Y')[1] "2001-11-26"</span>
二、修改当地,让R语言认为你是在美国或者英国
<span style="font-size:18px;">> Sys.setlocale('LC_TIME', "C")[1] "C"> as.Date('十一月 26, 2001',format='%B %d, %Y', tz = "UTC")[1] NA> as.Date('April 26, 2001',format='%B %d, %Y', tz="US")[1] "2001-04-26"</span>
今天的问题就此搞定,只有不停的学习,才能真正为社会的数据分析做贡献!
R语言学习笔记——日期时间处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。