R语言的基础包中提供了两种类型的时间数据,一类是Date日期数据,它不包括时间和时区信息,另一类是POSIXct/POSIXlt类型数据,其中包括了日期、时间和时区信息。一般来讲,R语言中建立时序数据是通过字符型转化而来,但由于时序数据形式多样,而且R中存贮格式也是五花八门,例如Date/ts/xts/zoo/tis/fts等等。lubridate包,timeDate包,都有用。
常见的格式:
as.numeric | 转化为数值型 |
as.logic | 转化为逻辑型 |
as.complex | 转化为复数型 |
as.character | 转化为字符型 |
as.array | 转化为数组 |
as.data.frame | 转化为数据框 |
d<-as.character(z) #将数值向量z<-(0:9)转化为字符向量c("0", "1", "2", ..., "9")。 as.integer(d) #将d转化为数值向量 e <- numeric() #产生一个numeric型的空向量e a=data.frame(a) #变成R的数据框 factor() #变成因子 可以用levels()来看因子个数
在data.frame中,是可以实现数据集重命名的,比如data.frame(x=iris,y=cars),
也可以实现横向、纵向重命名,data.frame(x=iris,y=cars,row.names=iris)
标准格式:
年-月-日或者年/月/日;如果不是以上二种格式,则会提供错误——错误于charTo按照Date(x) : 字符串的格式不够标准明确;
例如这样的数据格式,就常常报错。
19:15. |
as.Date('23-2013-1',format='%d-%Y-%m') #其中这个%d%Y可以节选其中一个 #%Y%y 大写代表年份四位数,小写代表年份二位数,要注意
格式 |
意义 |
%d |
月份中当的天数 |
%m |
月份,以数字形式表示 |
%b |
月份,缩写 |
%B |
月份,完整的月份名,指英文 |
%y |
年份,以二位数字表示 |
%Y |
年份,以四位数字表示 |
#其它日期相关函数
weekdays()取日期对象所处的周几;
months()取日期对象的月份;
quarters()取日期对象的季度;
mydate = as.POSIXlt(’2005-4-19 7:01:00’)
names(mydate)
默认情况下,日期之前是以/或者-进行分隔,而时间则以:进行分隔;
输入的标准格式为:日期 时间(日期与时间中间有空隔隔开)
时间的标准格式为:时:分 或者 时:分:秒;
如果输入的格式不是标准格式,则同样需要使用strptime函数,利用format来进行指定;
Sys.Date() #字符串类型
typeof(Sys.Date()) #系统日期类型
gtd <- as.Date("2011-07-01")
difftime(today, gtd, units="weeks") #计算日期差,还可以是“secs”, “mins”, “hours”, “days”
1、常常报错。错误于charTo按照Date(x) : 字符串的格式不够标准明确。这个错误经常出现,我本来的数据格式是
19:15. |
#几种错误汇总 dtV<-data.frame(as.POSIXct(a$b,format="%d.%m.%Y")) #错,读出来都是NA as.Date(a$b, "%Y年%m月%d日") #错,读不出来 as.POSIXct(strptime(a$b, "%Y-%m-%d")) #读不出来 #转化成xts格式也读不出来 install.packages("xts") library(xts) as.xts(read.zoo("time.csv",header=T)) a <- as.xts(a, descr='my new xts object') as.xts(read.zoo("a.csv",header=T)) #错 #转化成数值型也不对 c=as.numeric(sales[,2])
2、excel另存为csv时发生的错误。
一位网友说:我以前是在excel里另存为csv格式,百度上说CSV档如果以EXCEL开启,由于计算机档案数据转换的原因,会将其CRC之数值改做科学记号方式储存,而造成档案中的 CRC值发生错误。
可参考博客:
1、http://www.cnblogs.com/speeding/p/4060500.html
19:15. |