创建从 YYYY-MM-TT 到 YYYY-MM-TT 的简单动物园系列

Creating a simple zoo series from YYYY-MM-TT to YYYY-MM-TT

你能帮我解决以下问题吗? 我有一个很大的 excel 文件,看起来像这样:

Click here to view a screenshot for the excel file

假设这些是四家不同公司的股票价格。 在第一列中,您可以在 YY.MM.DD 中看到 2010 年几天的日期,并且 在第一行,您会看到公司编号。像 101、102 ... 所以101公司年初一的股价是4555美元。

现在我必须在 R 中为 eventstudies 包创建一个动物园系列。

Click here to view a screenshot for the description

创建此类格式的最快方法是什么?我进行了很多尝试,但没有得到正确的解决方案。这些值必须如下所示:

Click here to view a screenshot for the final zoo series

日期现在的格式是 YYYY-MM-DD。如您所见,我们在这个 zoo 系列中有一些带负号的值。所以它显示了从第 1 天到第 2 天的变化。

我的最终 zoo 系列将显示公司 101 从 2010 年 1 月 4 日开始每天的价值 +1。

要转换日期,请使用

new_data_variable <- as.Date(old_date_variable, "%m.%d.%y")

如果您也想重塑数据,有很多选项可用,但我不确定您在这方面需要什么。

我认为最简单的方法是将 as.xts() 与 seq.Date() 结合起来,如下所示:

startdate <- as.Date("2010-01-01")
enddate <- as.Date("2010-12-31")
timeseries <- as.xts(x = seq.Date(from = startdate, to = enddate, by = "1 day"))

编辑

也许这更接近你想要的:

x <- readxl::read_excel("filename.xlsx")
x$X__1 <- lubridate::dmy(x$X__1)
as.zoo(x)

简单:

library(zoo)
library(openxlsx)

sheet <- read.xlsx("<path to your excel doc.xlsx>")
dates <- as.Date(sheet[[1]], format = "%m.%d.%y") 
# if this doesn't work, replace 1 with your column name

startdate <- min(dates)
enddate <- max(dates)
dates <- seq(startdate, enddate, by = "day")
dates_zoo <- as.xts(dates)