学习R语言,很多人都推荐使用图灵程序设计丛书中的"R in Action"-《R语言实战》作为R语言学习的入门书籍,而且建议多看几遍。
我一个月以前没有接触过R语言,刚拿到《R语言实战》,翻了第一章抄写1-1代码,画了张图就搁置此书至今,找各种理由疏远它...生信技能树的七七师姐督促我系统地学《R语言实战》,一天一点地学,记录下自己的学习经验。
虚度光阴,对时间甚是敏感。
日期值,在《R语言实战》书中的第76至77页
R语言中的日期格式
- %d:数字表示的日期(0~31)如 01~31
- %a:缩写的星期名 如Mon
- %A:非缩写星期名 如 Monday
- %m:月份(00~12)如00~12
- %b:缩写的月份 如Jan
- %B:非缩写月份 如January
- %y:两位数的年份 如07
- %Y:四位数的年份 如2007
函数as.Date用于执行字符串的日期值转化为数值形式,语法为
as.Date(x,"input_format")
#x是字符型数据,input_format用于读入以上的日期格式,如
mydates <- as.Date(c("2007-06-22","2004-02-13"))#日期值的默认输入格式为yyyy-mm-dd
strDates <- c("01/05/1965","08/16/1975")#将默认的字符型转换了对应日期
dates <- as.Date(strDates,"%m/%d/%Y")
#run
mydates
[1] "2007-06-22" "2004-02-13"
> strDates
[1] "01/05/1965" "08/16/1975"
> dates
[1] "1965-01-05" "1975-08-16"
查看当前日期和时间
Sys.Date()#可以返回当天的日期
date()#返回当前的日期和时间
#run
> Sys.Date()
[1] "2019-06-07"
> date()
[1] "Fri Jun 7 16:57:17 2019"
format(x,format="output_format")#来输出指定格式的日期值,还可以提取日期值的某些部分
today <- Sys.Date()#今天为当前日期
format(today,format="%B,%d,%Y")#%B为非缩写月份,%d为日,%Y为四位数的年份。
#run
> today
[1] "2019-06-07"
> format(today,format="%B,%d,%Y")
[1] "六月,07,2019"
#如果把"%B,%d,%Y"里的月和年的格式改为"%m,%d,%y"
> today <- Sys.Date()
> format(today,format="%m,%d,%y")
[1] "06,07,19"
日期的执行运算
startdate <- as.Date("2004-02-13")
enddate <- as.Date("2011-01-22")
days <- enddate-startdate
days
#run
startdate <- as.Date("2004-02-13")
> enddate <- as.Date("2011-01-22")
> days <- enddate-startdate
> days
Time difference of 2535 days#两个日期相差的天数为2535天。
函数difftime()来计算时隔,并以星期,天,时,分,秒来表示
today <- Sys.Date()#今天为当前日
dob <- as.Date("1956-10-12")#选过去的一时间
difftime(today,dob,units = "weeks")#以星期为单位间隔
difftime(today,dob,units = "days")#以天数为单位间隔
difftime(today,dob,units = "hours")#以小时为单位间隔
difftime(today,dob,units = "mins")#以分钟为单位间隔,注意分钟的英文的写法
difftime(today,dob,units = "secs")#以秒为单位间隔,注意秒的英文的写法
#run
> today <- Sys.Date()
> dob <- as.Date("1956-10-12")
> difftime(today,dob,units = "weeks")
Time difference of 3269 weeks
> difftime(today,dob,units = "days")
Time difference of 22883 days
> difftime(today,dob,units = "hours")
Time difference of 549192 hours
> difftime(today,dob,units = "mins")
Time difference of 32951520 mins
> difftime(today,dob,units = "secs")
Time difference of 1977091200 secs
将日期转换为字符变量,使用函数as.character()
> strDates <- as.character(dates)
> strDates
[1] "1965-01-05" "1975-08-16"
> is.character(strDates)
[1] TRUE
了解更多字符型数据转换为日查看以下函数的帮助文档
help(as.Date)
help(strftime)
help(ISOdatetime)
今天学习的经验就记录到这里,谢谢生信技能树的七七师姐。
生信技能树全球公益巡讲
(https://mp.weixin.qq.com/s/E9ykuIbc-2Ja9HOY0bn_6g)
B站公益74小时生信工程师教学视频合辑
(https://mp.weixin.qq.com/s/IyFK7l_WBAiUgqQi8O7Hxw)