繁体   English   中英

如何将XTS列放入数据框

[英]How to put xts columns in to data frame

我试图将xts数据集成到我的数据框中,但是我不知道该怎么做,以下是我遇到的错误的示例。

library(xts)
data(sample_matrix)
xtsObject=as.xts(sample_matrix) 
#load xts and build in data sample_matrix


data=data.frame(Open=numeric(),
                High=numeric(),
                Low=numeric(),
                Close=numeric())
#create an empty data frame

data[,"Open"]=xtsObject[,"Open"]
#put data in(encounter error)

错误代码: [<-.data.frame*tmp* ,,“ Open”,value = c(50.0397819115463,:替换有180行,数据有0

到jihoward:是的,但是我想在建立数据框时设置列名。 例如,我没有得到想要的列名

xtsObject=as.xts(sample_matrix) 
data <- data.frame("colnames"=xtsObject$Open)
head(data) 
#               Open
#2007-01-02 50.03978
#2007-01-03 50.23050
       ...

在此示例中,我想要的列名称为“ colnames”,但更改为“ Open”。 因此,我选择“另一种方式”,首先构建所需的数据框,然后将数据放入其中,或者您有更好的解决方案?

除非我缺少任何东西,否则您要做的工作要多得多。

# convert to data.frame
data <- data.frame(xtsObject)
head(data)
#                Open     High      Low    Close
# 2007-01-02 50.03978 50.11778 49.95041 50.11778
# 2007-01-03 50.23050 50.42188 50.23050 50.39767
# 2007-01-04 50.42096 50.42096 50.26414 50.33236
# 2007-01-05 50.37347 50.37347 50.22103 50.33459
# 2007-01-06 50.24433 50.24433 50.11121 50.18112
# 2007-01-07 50.13211 50.21561 49.99185 49.99185

# only one column
data <- data.frame(xtsObject$Open)
head(data)
#                Open
# 2007-01-02 50.03978
# 2007-01-03 50.23050
# 2007-01-04 50.42096
# 2007-01-05 50.37347
# 2007-01-06 50.24433
# 2007-01-07 50.13211


# Another way
data <- data.frame(Open=numeric(), High=numeric(), Low=numeric(), Close=numeric())
data[1:nrow(xtsObject[,"Open"]) ,"Open"] <- xtsObject[,"Open"]
head(data)
#       Open High Low Close
# 1 50.03978   NA  NA    NA
# 2 50.23050   NA  NA    NA
# 3 50.42096   NA  NA    NA
# 4 50.37347   NA  NA    NA
# 5 50.24433   NA  NA    NA
# 6 50.13211   NA  NA    NA

请注意,最后一个选项的行名有所不同。

编辑 (回应OP的附录)

您可以在后面设置列名称; 这可能是最直接的。

data <- data.frame(xtsObject$Open)
colnames(data) <- "colname"

或者,您可以这样进行:

data <- data.frame(colname=as.data.frame(xtsObject)$Open)

如果列名Open实际上存储在变量中,则可以使用:

openCol <- "Open"
data <- data.frame(colname=as.data.frame(xtsObject)[[openCol]])

注意使用[[openCol]]不是 [openCol]

data没有行,因此您必须指定它们:

data[1:nrow(xtsObject[,"Open"]) ,"Open"] <- xtsObject[,"Open"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM