使用具有不同行数的日期创建XTS

时间:2014-09-17 19:46:57

标签: r xts

尝试创建一个xts文件但在加载后格式化后,我的日期行数与我的数据不同。我的数据有很多行,行数不等,从20到200不等。我想在加载后创建一个单独的变量,并且变量依赖于我想要查看的复合,所以我想要一个完整的data.frame在创建变量之前使用NA,我将na.omit并减少尺寸。

以下是代码:

#load file with desired composite
allcomposites <- read.csv("Composites 2014.08.31.csv", header = T)
compositebench <- allcomposites[1, 2:ncol(allcomposites)]
dates1 <- as.Date(allcomposites$Name, format = "%m/%d/%Y")
allcomposites <- as.data.frame(lapply(allcomposites[2:nrow(allcomposites),2:ncol(allcomposites)],    as.numeric))
allcomposites <- as.xts(allcomposites, order.by = dates1)
## Error in xts(x, order.by = order.by, frequency = frequency, ...) :
##     NROW(x) must match length(order.by)

编辑以显示所有复合材料的外观:

Name    Composite1  Composite2  Composite3  Composite4 Composite5
Bmark   229 229 982 612 995
8/31/2014   0.9979  0.9404  4.3808      3.9296
7/31/2014   -0.4563 -0.3038 -1.7817     -1.7248
6/30/2014   0.205   0.2234  2.2184      2.7304
5/31/2014   1.311   1.5771  3.4824      1.7601
4/30/2014   0.9096  1.0187  -1.9195     1.2964

2 个答案:

答案 0 :(得分:0)

dates1allcomposites删除第一行时,您需要更加小心。

这是实现目标的另一种方式:

Lines <- "Name    Composite1  Composite2  Composite3  Composite4 Composite5
Bmark   229 229 982 612 995
8/31/2014   0.9979  0.9404  4.3808      3.9296
7/31/2014   -0.4563 -0.3038 -1.7817     -1.7248
6/30/2014   0.205   0.2234  2.2184      2.7304
5/31/2014   1.311   1.5771  3.4824      1.7601
4/30/2014   0.9096  1.0187  -1.9195     1.2964"

library(xts)
# use fill=TRUE because you only provided data for 4 composites
allcomp <- read.table(text=Lines, header=TRUE, fill=TRUE)
# remove the first row that contains "Bmark"
allcomp <- allcomp[-1,]
# create an xts object from the remaining data
allcomp_xts <- xts(allcomp[,-1], as.Date(allcomp[,1], "%m/%d/%Y"))

答案 1 :(得分:0)

## Error in xts(x, order.by = order.by, frequency = frequency, ...
##     NROW(x) must match length(order.by)

我浪费了几个小时来遇到这个错误。无论我是否有完全相同的问题,我都会告诉我如何解决这个错误信息,以免它为你节省我的痛苦。

我通过几个导入函数导入了Excel或CSV文件(两者都尝试过),然后尝试将我的数据(作为data.frame或.zoo对象)转换为xts对象并继续收到错误,包括这个错误。

我尝试单独创建一个日期向量,以作为order.by参数传入。我尝试确保data.frame的行的日期向量是相同的。有时它有效,有时它没有,原因我无法解释。即使它确实奏效了,R也没有“强迫”#34;将我的所有数字数据转换为字符数据(后来给我带来了无穷无尽的问题。我学会了注意强制。)

这些错误一直持续到:

对于xts转换,我使用导入的Excel工作表中的日期列作为order.by参数和as.Date()修饰符,并且I *在<期间删除了日期列 / em>转换为xts。*

这是工作代码:

xl_sheet <- read_excel("../path/to/my_excel_file.xlsx")
sheet_xts <- xts(xl_sheet[-1], order.by = as.Date(xl_sheet$date))

注意我的日期列是第一列,因此xl_sheet [-1]删除了第一列。