【问题标题】:Time series (xts) strptime; ONLY month and day时间序列(xts)strptime;只有月份和日期
【发布时间】:2013-12-09 15:12:51
【问题描述】:

我一直在尝试对我的数据框做一个时间序列,我需要从我的 csv 中删除时间。这就是我所拥有的:

campbell <-read.csv("campbell.csv")

campbell$date = strptime(campbell$date, "%m/%d")
campbell.ts <- xts(campbell[,-1],order.by=campbell[,1])

首先,我要做的只是让 xts 将日期剥离为“xx/xx”,仅表示月份和日期。我的数据没有年份。当我尝试第二行代码并调用日期列时,它将其转换为“2013-xx-xx”。这些月份和日子没有与它们相关的年份,我不知道如何摆脱 2013 年。(我正在调用的 csv 文件的日期格式为“9/30,10/1. ..等等)

其次,一旦我尝试制作时间序列(第三行),我不确定“order.by”命令在调用什么。我在索引什么?

有什么帮助吗??

谢谢!

【问题讨论】:

标签: r xts strptime


【解决方案1】:

对于strptime,您需要提供完整的日期,即日、月和年。如果未提供其中任何一个,则从系统时间假定当前时间并附加到不完整的日期。因此,如果您想保留已阅读的日期格式,请先复制该格式并存储在临时变量中,然后使用strptime 而不是campbell$date 转换为R 可读日期格式。由于年份不是您关心的问题,因此即使它是由strptime 自动附加的,您也不必担心它。

campbell <-read.csv("campbell.csv")
date <- campbell$date
campbell$date <- strptime(campbell$date, "%m/%d")

其次,您通过“第三行”(xts(campbell[,-1],order.by=campbell[,1]))命令所做的是,您告诉您根据提供的索引对除第一列(campbell[,-1])之外的所有campbell 数据进行排序由campbell (campbell[,1]) 的第一列中的时间数据。因此,只有在 date 位于第一列时,它才会起作用。

根据时间序列对数据进行排序后,您可以将campbell$date 列替换为date 以获取您想要的日期格式(虽然在这里,首先您必须订购date,如下所示)

date <- xts(date, order.by=campbell[,1])  # assuming campbell$date is campbell[,1]
campbell.ts <- xts(campbell[,-1], order.by=campbell[,1])
campbell.ts <- cbind(date, campbell.ts)

【讨论】:

    【解决方案2】:
    format(as.Date(campbell$dat, "%m/%d/%Y"), "%m/%d")
    

    【讨论】:

    • 如果你编辑什么的,你会得到积分吗? b/c 你没有改变任何东西
    • 没有超过 2k 的代表没有意义,编辑只是添加代码格式(代码行前的 4 个空格)。因为这是一个低质量的答案,即使它有效,也没有解释它的作用。
    猜你喜欢
    • 1970-01-01
    • 2018-10-15
    • 2021-12-09
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多