0

我们有一个 csv 文件,其中包含 Excel 格式的日期和经理 A 和经理 B 的导航,如下所示:

Date,Manager A,Date,Manager B
41346.6666666667,100,40932.6666666667,100
41347.6666666667,100,40942.6666666667,99.9999936329992
41348.6666666667,100,40945.6666666667,99.9999936397787
41351.6666666667,100,40946.6666666667,99.9999936714362
41352.6666666667,100,40947.6666666667,100.051441180137
41353.6666666667,100,40948.6666666667,100.04877283951
41354.6666666667,100.000077579585,40949.6666666667,100.068400298752
41355.6666666667,100.00007861475,40952.6666666667,100.070263374822
41358.6666666667,100.000047950872,40953.6666666667,99.9661095940006
41359.6666666667,99.9945012295984,40954.6666666667,99.8578245935173
41360.6666666667,99.9944609274138,40955.6666666667,99.7798031949116
41361.6666666667,99.9944817907402,40956.6666666667,100.029523604978
41366.6666666667,100,40960.6666666667,100.14859511024
41367.6666666667,99.4729804387476,40961.6666666667,99.7956029017769
41368.6666666667,99.4729804387476,40962.6666666667,99.7023420799123
41369.6666666667,99.185046151864,40963.6666666667,99.6124531927299
41372.6666666667,99.1766469096966,40966.6666666667,99.5689030038018
41373.6666666667,98.920738006398,40967.6666666667,99.5701493637685
,,40968.6666666667,99.4543885041996
,,40969.6666666667,99.3424528379521

我们要创建一个具有以下结构的动物园对象 [日期,经理 A 导航,经理 B 导航]。

读取 csv 文件后:

data = read.csv("...", header=TRUE, sep=",")

我们为分割对象设置了一个索引,并使用 lapply 来分割

INDEX <- seq(1, by = 2, length = ncol(data) / 2)

data.zoo <- lapply(INDEX, function(i, data) data[i:(i+1)], data = zoo(data))

我坚持日期是 Excel 格式并且不知道如何解决这些问题。问题是否以正确的方式设置?

4

1 回答 1

1

如果您只想将日期转换为正确的日期,那么您可以很容易地做到这一点。您需要知道的是原始日期。您的数字代表自原始日期以来经过的整数和小数天数。通常这是 1990 年 1 月 0 日!!!去想,但要小心,因为我认为情况并非总是如此。你可以试试这个...

# Excel origin is day 0 on Jan 0 1900, but treats 1900 as leap year so...
data$Date <- as.Date( data$Date , origin = "1899/12/30")
data$Date.1 <- as.Date( data$Date.1 , origin = "1899/12/30")
# For more info see ?as.Date

如果您也有兴趣保持时间,可以使用as.POSIXct,但您还必须指定时区(默认为 UTC);

data$Date <- as.POSIXct(data$Date, origin = "1899/12/30" )
head(data)
#                    Date Manager.A     Date.1 Manager.B
#   1 2013-03-13 16:00:00       100 2012-01-24 100.00000
#   2 2013-03-14 16:00:00       100 2012-02-03  99.99999
#   3 2013-03-15 16:00:00       100 2012-02-06  99.99999
#   4 2013-03-18 16:00:00       100 2012-02-07  99.99999
#   5 2013-03-19 16:00:00       100 2012-02-08 100.05144
#   6 2013-03-20 16:00:00       100 2012-02-09 100.04877
于 2013-04-10T16:12:47.983 回答