gpt4 book ai didi

R:在 R 中将数据框(混合因子和数字)转换为 XTS

转载 作者:行者123 更新时间:2023-12-04 11:03:39 24 4
gpt4 key购买 nike

将具有混合因子和数字列的数据框转换为 xts 时,我的所有数据都会转换为字符串。这不是因素的问题,但数字非常烦人。有解决方法吗?

例如:

> x

marketTimestamp price id
1 2010-12-17 11:38:31.100 83.89 b-0
2 2010-12-17 11:38:31.100 83.88 b-1
3 2010-12-17 11:38:31.100 83.87 b-2
4 2010-12-17 11:38:31.300 83.91 o-0
5 2010-12-17 11:38:31.300 83.92 o-1
6 2010-12-17 11:38:31.300 83.93 o-2

> as.xts(x[,-1],as.POSIXct(x[,1]))

price id
2010-12-17 11:38:31 "83.89" "b-0"
2010-12-17 11:38:31 "83.88" "b-1"
2010-12-17 11:38:31 "83.87" "b-2"
2010-12-17 11:38:31 "83.91" "o-0"
2010-12-17 11:38:31 "83.92" "o-1"
2010-12-17 11:38:31 "83.93" "o-2"

理想情况下,我希望第一列保持数字,而第二列转换为字符串。该解决方案需要完全自动化,因为我正在处理具有大量列的数据集,并且我无法总是预测哪些是因子,哪些是数字。

——

编辑:

我试图通过定义以下函数来解决这个问题:
to.xts <- function(data) {

timestamp <- as.POSIXct(data[,1])
coredata <- data[,-1]

headers <- names(coredata)
data.type <- c()

for (header in headers) {
data.type[headers==header] <- class(coredata[[header]])
}

data.factor <- xts(coredata[,data.type=="factor"],timestamp)
data.numeric <- xts(coredata[,data.type=="numeric"],timestamp)

data.xts <- cbind(data.factor,data.numeric)

}

但是当合并两个 XTS 对象时,字符串数据被转换为 NA:
> x
id side
2010-12-17 11:38:31 "b-0" "BID"
2010-12-17 11:38:31 "b-1" "BID"
2010-12-17 11:38:31 "b-2" "BID"
> y
price
2010-12-17 11:38:31 83.89
2010-12-17 11:38:31 83.88
2010-12-17 11:38:31 83.87
> merge(x,y)
id side price
2010-12-17 11:38:31 NA NA 83.89
2010-12-17 11:38:31 NA NA 83.88
2010-12-17 11:38:31 NA NA 83.87
Warning message:
In merge.xts(x, y) : NAs introduced by coercion

这是 XTS 包的已知问题,还是我做错了什么?

最佳答案

您不能这样做,因为 xts 需要一个数字矩阵。

关于R:在 R 中将数据框(混合因子和数字)转换为 XTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4470735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com