日期值
日期值通常以字符串的形式输入到R中,然后转化为以数值形式存储的日期变量。函数as.Date()用于执行这种转化。其语法为as.Date(x, "input_format"),其中x是字符型数据,input_format则给出了用于读入日期的适当格式。
strDates <- c("01/05/1965", "08/16/1975")
dates <- as.Date(strDates, "%m/%d/%Y")
dates
[1] "1965-01-05" "1975-08-16" #结果:则使用mm/dd/yyyy的格式读取数据。
有两个函数对于处理时间戳数据特别实用。Sys.Date()可以返回当天的日期,而date()则返回当前的日期和时间。我写下这段文字的时间是2020年5月29日晚上22:11。所以执行这些函数的结果是:
> Sys.Date()
[1] "2020-05-29"
> date()
[1] "Fri May 29 22:11:33 2020"
可以使用函数format(x, format="output_format")来输出指定格式的日期值,并且可以提取日期值中的某些部分:
> today <- Sys.Date()
> format(today, format="%B %d %Y") #%B非缩写月份、%d数字表示的日期(0~31)、%Y四位数的年份
[1] ""五月 29 2020""
> format(today, format="%A") #A为非缩写星期名
[1] "星期五"
format()函数可接受一个参数(本例中是一个日期)并按某种格式输出结果。这里最重要的结果是,距离周末只有两天时间了!R的内部在存储日期时,是使用自1970年1月1日以来的天数表示的,更早的日期则表示为负数。这意味着可以在日期值上执行算术运算。例如:
> startdate <- as.Date("2004-02-13")
> enddate <- as.Date("2011-01-22")
> days <- enddate - startdate
> days
Time difference of 5950 days
显示了2004年2月13日到今天之间的天数。最后,也可以使用函数difftime()来计算时间间隔,并以星期、天、时、分、秒来表示。假设我出生于1956年10月12日,我现在有多大呢?
> today <- Sys.Date()
> born<- as.Date("1956-10-12")
> difftime(today, born, units="weeks")
Time difference of 3320 weeks
很明显,我有3320周这么大,谁知道呢?最后一个小测验:猜猜我生于星期几?
结束语
我还是那个在生信路上摸爬滚打的工具人。一起加油吧!如果需要提供帮助或者是反馈意见,可以发送邮件到 liwei12306@163.com

文章转载自生信工具人,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




