
R语言与格式、日期格式、格式转化.pdf
7页2016/8/14R语言与格式、日期格式、格式转化 素质笔记 博客频道 CSDN.NET R日期格式日期差代码时间处理分类:目录(?)[+]R语言与格式、日期格式、格式转化20160216 22:12 1624人阅读 评论(0) 收藏 举报版权声明:本文为博主原创文章,未经博主允许不得转载R语言的基础包中提供了两种类型的时间数据,一类是Date日期数据,它不包括时间和时区信息,另一类是POSIXct/POSIXlt类型数据,其中包括了日期、时间和时区信息基本总结如下:日期data,存储的是天;时间POSIXct 存储的是秒,POSIXlt 打散,年月日不同;日期-时间=不可运算一般来讲,R语言中建立时序数据是通过字符型转化而来,但由于时序数据形式多样,而且R中存贮格式也是五花八门,例如Date/ts/xts/zoo/tis/fts等等lubridate包,timeDate包,都有用常见的格式:as.numeric转化为数值型as.logic转化为逻辑型plex转化为复数型as.character转化为字符型as.array转化为数组as.data.frame转化为数据框在data.frame中,是可以实现数据集重命名的,比如data.frame(x=iris,y=cars),也可以实现横向、纵向重命名,data.frame(x=iris,y=cars,row.names=iris)——————————————————————————————————————————时间的标准格式mydate = as.POSIXlt(’2005-4-19 7:01:00’) names(mydate)默认情况下,日期之前是以/或者-进行分隔,而时间则以:进行分隔;输入的标准格式为:日期 时间(日期与时间中间有空隔隔开)R的数据读入与基础(1)(20) [plain] view plain copy print?01. d x unclass(x) 03. [1] 0 04. > 05. > unclass(as.Date(“1970‐02‐01“)) #19700201代表第31天 06. [1] 31 [plain] view plain copy print?01. as.Date('23‐2013‐1',format='%d‐%Y‐%m') 02. #其中这个%d%Y可以节选其中一个 03. #%Y%y 大写代表年份四位数,小写代表年份二位数,要注意 2016/8/14R语言与格式、日期格式、格式转化 素质笔记 博客频道 CSDN.NET 是以1970年1月1号开始的以秒进行存储,如果是负数,则是1970-01-01年以前;正数则是1970年以后。
POSIXlt 是以列表的形式存储:年、月、日、时、分、秒,作用是打散时间;1、POSIXlt 格式主要特点:作用是打散时间,把时间分成年、月、日、时、分、秒,并进行存储可以作为时间筛选的一种代码解读:unclass将时间打散[html] view plain copy print?01. > today unclass(as.POSIXlt(today)) 03. $sec 04. [1] 53.27151 05. 06. $min 07. [1] 38 08. 09. $hour 10. [1] 20 11. 12. $mday 13. [1] 6 14. 15. $mon 16. [1] 5 17. 18. $year 19. [1] 116 20. 21. $wday 22. [1] 1 23. 24. $yday 25. [1] 157 26. 27. $isdst 28. [1] 0 29. 30. $zone 31. [1] “CST“ 32. 33. $gmtoff 34. [1] 28800 35. 36. attr(,“tzone“) 37. [1] ““ “CST“ “CDT“ 2016/8/14R语言与格式、日期格式、格式转化 素质笔记 博客频道 CSDN.NET 格式主要特点:以秒进行存储。
解读:比如今天,unclass之后,代表今天2016-06-06距离1970-01-01为1465216942秒GMT代表时区,德意志时间,CST也代表时区————————————————————————————————————————三、时间运算1、基本运算函数Sys.Date() #字符串类型typeof(Sys.Date()) #系统日期类型2、直接加减相同的格式才能相互减,不能加二进列的+法对“Date“、“POSIXt“对象不适用相互减之后,一般结果输出的天数3、difftime函数——计算时差不同格式的时间都可以进行运算并且可以实现的是计算两个时间间隔:秒、分钟、小时、天、星期但是不能计算年、月、季度的时间差[html] view plain copy print?01. > today today 03. [1] “2016‐06‐06 20:42:22 CST“ 04. > unclass(as.POSIXct(today)) 05. [1] 1465216942 [html] view plain copy print?01. > as.Date(“2011‐07‐01“) ‐ as.Date(today) 02. Time difference of ‐1802 days 03. > as.POSIXct(today)‐as.POSIXct(as.Date(“2012‐10‐25 01:00:00“)) 04. Time difference of 1320.529 days 05. > as.POSIXlt(today)‐as.POSIXlt(as.Date(“2012‐10‐25 01:00:00“)) 06. Time difference of 1320.529 days [html] view plain copy print?01. gtd today format(today,format=“%B‐%d‐%Y“) 03. [1] “六月‐06‐2016“ [html] view plain copy print?01. > today format(as.Date(today),format=“%Y“) 03. [1] “2016“ 04. > format(as.POSIXlt(today),format=“%Y“) 05. [1] “2016“ 06. > format(as.POSIXct(today),format=“%Y“) 07. [1] “2016“ [html] view plain copy print?01. > strptime(“2006‐01‐08 10:07:52“, “%Y‐%m‐%d“)‐strptime(“2006‐01‐15 10:07:52“, “%Y‐%m‐%d“) 02. Time difference of ‐7 days 03. > class(strptime(“2006‐01‐08 10:07:52“, “%Y‐%m‐%d“)) 04. [1] “POSIXlt“ “POSIXt“ 2016/8/14R语言与格式、日期格式、格式转化 素质笔记 博客频道 CSDN.NET 因,会将其CRC之数值改做科学记号方式储存,而造成档案中的 CRC值发生错误。
——————————————————————————————————————————————————应用1——如何通过生日计算年龄1、format函数format只能一个一个操作,可以先写成函数,然后计算得出年份,之后用如今的年份相减得到年龄2、字符型——strsplit先转化为字符型,然后进行分割注意,其中strsplit中的“-“,根据具体时间格式情况来定义[plain] view plain copy print?01. #几种错误汇总 02. dtV<‐data.frame(as.POSIXct(a$b,format=“%d.%m.%Y“)) #错,读出来都是NA 03. as.Date(a$b, “%Y年%m月%d日“) #错,读不出来 04. as.POSIXct(strptime(a$b, “%Y‐%m‐%d“)) #读不出来 05. 06. #转化成xts格式也读不出来 07. install.packages(“xts“) 08. library(xts) 09. as.xts(read.zoo(“time.csv“,header=T)) 10. a <‐ as.xts(a, descr='my new xts object') 11. as.xts(read.zoo(“a.csv“,header=T)) 12. #错 13. 14. #转化成数值型也不对 15. c=as.numeric(sales[,2]) [html] view plain copy print?01. timeformat<‐function(x){ 02. format(as.POSIXct(x),format=“%Y“) 03. } 04. sapply(as.Date(data$birthdate),timeformat) [html] view plain copy print?01. data.frame(sapply(as.character(data$birthdate),function(x){strsplit(x,“‐“)[[1]][1]})) 2016/8/14R语言与格式、日期格式、格式转化 素质笔记 博客频道 CSDN.NET。
