首页 > 代码库 > 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等

SymbolMeaningExample
%dday as a number (0-31)01-31
%a
%A
abbreviated weekday
unabbreviated weekday
Mon
Monday
%mmonth (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语言学习笔记——日期时间处理