首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R-将数据转换为xts增加报价(在xts中)

R-将数据转换为xts增加报价(在xts中)
EN

Stack Overflow用户
提问于 2016-10-04 14:46:23
回答 2查看 1.3K关注 0票数 0

我正在使用dataframe创建一个xts。创建xts,但所有值(xts中的索引除外)都在引号内。这导致我不能使用数据,因为许多函数,如sum,都不能工作。

有什么想法吗?我怎样才能得到没有报价的xts?

下面是我更新的代码,因为我对dataframes/xts的不一致名称进行了注释。

代码语言:javascript
运行
复制
# creates a dataframe with dates and currency
mydf3 <- data.frame(date = c("2013-12-10", "2015-04-01", 
"2016-01-03"), plus = c(4, 3, 2), minus = c(-1, -2, -4))
# transforms the column date to date-format
mydf3 = transform(mydf3,date=as.Date(as.character(date),format='%Y-%m-%d'))
# creates the xts, based on the dataframe mydf3
myxts3 <- xts(mydf3, order.by = mydf3$date)
# removes the column date, since date is now stored as index in the xts
myxts3$date <- NULL
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-04 15:37:19

您需要认识到,将数据存储在xts对象中的底层数据结构是一个R矩阵对象,它只能是一个R类型(例如,所有数字或所有字符)。时间戳存储为单独的向量(在本例中为日期列),用于按时间对数据进行索引/细分。

造成问题的原因是date列迫使数据矩阵转换为字符类型矩阵(在xts对象中),而不是数字。当date类包含在矩阵中时,它似乎会转换为字符:

代码语言:javascript
运行
复制
> as.matrix(mydf3)
     date         plus minus
[1,] "2013-12-10" "4"  "-1" 
[2,] "2015-04-01" "3"  "-2" 
[3,] "2016-01-03" "2"  "-4" 

当您的数据中有非数字数据时,您将转换为xts (在x参数的xts中),就会遇到这样的问题。

您的问题可以按以下方式解决( wici在评论中已经说明了什么)

代码语言:javascript
运行
复制
myxts3 <- xts(x= mydf3[, c("plus", "minus")], order.by = mydf3[, "date"])

> coredata(myxts3)
plus minus
[1,]    4    -1
[2,]    3    -2
[3,]    2    -4
> class(coredata(myxts3))
[1] "matrix"
票数 3
EN

Stack Overflow用户

发布于 2022-09-18 14:51:34

日期部分应该在索引中,而不是数据的一部分。read.zoo会为你制作一个动物园物体。然后,如果需要xts,您可以将其转换为xts。

代码语言:javascript
运行
复制
library(xts)
as.xts(read.zoo(mydf3))
##            plus minus
## 2013-12-10    4    -1
## 2015-04-01    3    -2
## 2016-01-03    2    -4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39855315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档