R语言中使用as.Date想转变日期的形式 as.Date(x,format ("%Y%d%m")

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言中使用as.Date想转变日期的形式 as.Date(x,format ("%Y%d%m")相关的知识,希望对你有一定的参考价值。

R语言中使用as.Date想转变日期的形式
as.Date(x,format ("%Y%d%m")),但是错误提醒我一定要设定origin,这是为什么?

在我们日常所遇到的数据分析任务中,会遇到很多与日期时间挂钩的数据,比如本月每日的销售额和网页一天内每个时间节点的点击量。这类型的数据大多数为时间序列,而时间序列分析在日常中也是很常见的。现在我们先来聊一下R语言中关于日期时间的处理,之后有时间的话就学习一些有关时间序列分析的方法。

一、日期函数as.Date()函数

R中自带的函数as.Date首先和大家介绍一下它的日常用法,第一个就是我们使用as.Date来返回日期数据形式,且默认的格式为年-月-日,format参数用于识别输入的日期按照那种数据逻辑输入,比如下面数据是以"*年*月*日"的逻辑输入:

> as.Date("2019年9月28日", format = "%Y年%m月%d日")
[1] "2019-09-28"
其中我们看到上面%Y等等的字符,其实是日期格式的一种字符形式,常用的格式如下:

第二个用法就是我们给定起点日期,再输入延后天数,就可以输出对应的日期:

> as.Date(31,origin ='2019-01-01')
[1] "2019-02-01"
二、时间函数POSIXct与POSIXlt

(1).POSIXIt主要特点:作用是打散时间,把时间分成年、月、日、时、分、秒,并进行存储我们可以结合unclass()函数,从而提取日期时间信息。比如:

> unclass(as.POSIXlt('2018-9-7 8:12:23'))
$sec
[1] 23

$min
[1] 12

$hour
[1] 8

$mday
[1] 7

$mon
[1] 8

$year
[1] 118

$wday
[1] 5

$yday
[1] 249

$isdst
[1] 0

$zone
[1] "CST"

$gmtoff
[1] NA
我们输入带时间的日期数据,利用unclass和as.POSIXlt函数就可以返回秒、分、时、日、该年已过月数、已过年数(从1900起)、星期几、该天对应该年的第几天,时区等等。

(2).POSIXct 是以1970年1月1号8点开始的以秒进行存储,如果是负数,则是之前的日期时间;正数则是之后,比如:

> unclass(as.POSIXct('1970-1-1 8:00:20'))
[1] 20
attr(,"tzone")
[1] ""
三、日期时间的运算

(1).日期相减,得到相差的天数

> as.Date("2019-10-01") - as.Date('2019-9-26')
Time difference of 5 days
(2).带时间的日期相减,得到相差数(可以指定units参数为"secs","mins","hours","days")

> difftime('2019-10-1 10:00:00',"2019-10-1 6:00:00",units="hours")
Time difference of 4 hours
参考技术A Format方法有两种形式,另外一种是三个参数的,主要区别在于它是线程安全的, 但并不多用,所以这里只对第一个介绍。Format参数是一个格式字符串,用于格式化Args里面的值的。Args是一个变量数组,即它里面可以有多个参数,而且每个参数可以不同。 例如:
Format("my name is %6s","wind");
返回的是:my name is wind

Format里面可以写普通的字符串,比如"my name is" ,但有些格式指令字符具有特殊意义,比如"%6s"
格式指令具有以下的形式: "%" [index ":"] ["-"] [width] ["." prec] type
它是以"%"开始,而以type结束,type表示一个具体的类型。中间是用来格式化type类型的指令字符,是可选的。追问

感觉不是我要的答案啊,说的不是一个东西

参考技术B R语言中使用as.Date想转变日期的形式 as.Date(x,format ("%Y%d%m")?刚刚在处理从ACCESS返回的数据时,无意中发现所有数据的日期比实际少了一天,认真检查原数据以后,没有发现丢失,于是推断可能是由于时区的转换问题,查看了帮助,系统默认是UTC时区,而数据中的日期字符为CTS,如"2018-02-13 CST",的转换过程中加入参数as.Date(dat$日期, tz = "CST"),系统不认。再查找网上有的解决办法是使用format("2018-02-13 CST","%Y%m%d"),并不好使。于是继续看帮助,最终使用as.Date(dat$日期, tz = "NZ"),问题解决。日期转换正确。 参考技术C x的内容要用‘’,因为是字符串形式 参考技术D 你用x-<as.character(x),先把x转化成字符型,再用as.Date转化成日期试试。

r语言如何把数据框内的数值型数据转变成日期型数据

参考技术A 有数据集a,变量x,将变量x从数值型变为日期型,其代码如下:

a$x=as.Date(a$x)

以上是关于R语言中使用as.Date想转变日期的形式 as.Date(x,format ("%Y%d%m")的主要内容,如果未能解决你的问题,请参考以下文章

R语言基础篇——数据对象与数据读写

R语言as.Date函数将字符串转化为日期格式实战

R语言笔记 日期值

R语言日期格式符号as.Date函数字符串数据转换为日期数据格式as.Date函数将dataframe的字符串(character)数据列转换为日期(date)格式数据列

R语言:as.Date出现NA值

R语言构建仿真数据(time series)ggplot2时间序列数据可视化(坐标轴包含时分秒信息)as.date只会将数据解析为日期date为了解析到时分秒需要使用as.posixct函数