尝试创建一个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
答案 0 :(得分:0)
从dates1
和allcomposites
删除第一行时,您需要更加小心。
这是实现目标的另一种方式:
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]删除了第一列。