R3—日期处理

一. 问题引入

下面是一个房地产价格数据,现在想要提取2008年6月份的数据进行分析,在R中该如何操作呢?
           city   price bedrooms squarefeet lotsize latitude longitude      month
1 San Francisco 1470000        3       2424      NA 37.75651 -122.4469 2008-06-01
2 San Francisco  385000        0       1304    2143 37.71010 -122.4216 2009-06-01
3 San Francisco 1043000        2       1400      NA 37.77984 -122.3928 2009-06-01
4 San Francisco  560000        2       1149      NA 37.78696 -122.4225 2009-01-01
5 San Francisco  419000       NA         NA      NA 37.78696 -122.4225 2008-03-01
6 San Francisco  552000       NA         NA      NA 37.78430 -122.3909 2009-03-01
# 这里就涉及到R的日期处理方法!

二. R日期处理方法简介

# 1)取出当前日期

> Sys.Date()
[1] "2015-04-20"  
> date()
[1] "Mon Apr 20 15:46:32 2015"
#2)字符串转化为日期
as.Date()可以将一个字符串转换为日期值,默认格式是yyyy-mm-dd。
##在R中,日期类型其实是double类型,实际存储的是从1970年1月1日以来的天数!
> as.Date('2015-4-20') ##得到"2007-02-01",显示为字符串,但实际是用double存储的!
>as.double(as.Date("1970-01-01"))  #结果为0,是从1970年1月1日以来的天数。

## 可以把定制的日期字符串转换为日期型

> as.Date("2015年4月20日", "%Y年%m月%d日") 
[1] "2015-04-20"

#3)日期转化为字符串

> today <- Sys.Date()
> format(today, "%Y年%m月%d日")
[1] "2015年04月20日"
$4)计算日期差

由于日期内部是用double存储的天数,所以是可以相减的。

> today<-Sys.Date()
> age30<- as.Date("2020-01-01") 
> age30-today
Time difference of 1717 days
@@@离我30岁只有1717天了啊!

##用difftime()函数可以计算相关的秒数、分钟数、小时数、天数、周数

difftime(today, age30, units="weeks")  #还可以是“secs”, “mins”, “hours”, “days”

> difftime(today, age30, units="weeks")  
Time difference of -245.2857 weeks

三. 需求解答

> dat<-subset(x = dat,subset =(as.double(as.Date(dat$month))>=14031 & as.double(as.Date(dat$month))<=14060)) #as.Date将字符型month转化成日期型,as.double转化成double型!
> head(dat)
            city   price bedrooms squarefeet lotsize latitude longitude      month
1  San Francisco 1470000        3       2424      NA 37.75651 -122.4469 2008-06-01
24 San Francisco  815000       NA         NA      NA 37.74917 -122.4500 2008-06-01
29 San Francisco  548000        2       1100    1792 37.71153 -122.4623 2008-06-01
33 San Francisco  400000       NA         NA      NA 37.79035 -122.4126 2008-06-01
59 San Francisco 1795000        3       1028      NA 37.80241 -122.4186 2008-06-01
88 San Francisco 2300000       10       6600    2738 37.77007 -122.4320 2008-06-01
 
原文地址:https://www.cnblogs.com/Bfrican/p/4441845.html