从 tibble 转换为 xts 后更改数据类型

Posted

技术标签:

【中文标题】从 tibble 转换为 xts 后更改数据类型【英文标题】:Changing datatypes after converting from tibble to xts 【发布时间】:2021-10-09 21:12:35 【问题描述】:

我从网上抓取数据,并将其存储为具有以下数据类型的 tibble:

tibble [40 x 4] (S3: tbl_df/tbl/data.frame)
 $ Date                   : Date[1:40], format: "2021-02-10" "2021-02-09" "2021-02-08" ...
 $ Net Asset Value        : num [1:40] 5.81 5.69 5.57 5.49 5.48 ...
 $ Accumulated Asset Value: num [1:40] 2.33 2.28 2.24 2.21 2.2 ...
 $ Daily Return           : chr [1:40] "2.15%" "2.18%" "1.46%" "0.18%" ...

但是,一旦我将其更改为 xts

fund_table$Date <- as.Date(fund_table$Date,"%Y-%m-%d")
fund_table_xts <- xts(fund_table[,-1],  order.by = fund_table$Date)

突然所有的数据都是字符...

An ‘xts’ object on 2020-12-16/2021-02-10 containing:
    Data: chr [1:40, 1:3] ...

我隐约意识到(或者至少我认为)xts 在百分比方面表现不佳;我该怎么做才能将所有内容一劳永逸地改回数字?

【问题讨论】:

【参考方案1】:

xts不能存储混合类型的数据。由于Daily Return 列是字符,所有值都转换为字符。

你有几个选择 -

    fund_table 中删除Daily Return 列。
fund_table$`Daily Return` <- NULL
    Daily Return 转换为数字。
fund_table$`Daily Return` <- readr::parse_number(fund_table$`Daily Return`)

然后您可以像之前一样将数据转换为xts

【讨论】:

以上是关于从 tibble 转换为 xts 后更改数据类型的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据框转换为xts

我尝试导入外部外汇数据,但无法将其转换为 xts 对象

R语言dplyr包as.tbl函数(转化为tibble类型)和is.tbl函数(检查数据是否为tibble类型)实战

将 tibble 转换为带有列标题的数据框

使用 setkeyv 参数在 R 问题中将 xts 转换为 data.table

如何将 data.frame 表转换为 xts 对象