gpt4 book ai didi

从 R 中的 CSV 文件读取 xts

转载 作者:行者123 更新时间:2023-12-02 15:56:39 26 4
gpt4 key购买 nike

我正在尝试从 CSV 文件读取时间序列并将它们保存为 xts 以便能够使用 quantmod 处理它们。问题是数值没有被解析。

CSV 文件:

name;amount;datetime
test1;3;2010-09-23 19:00:00.057
test2;9;2010-09-23 19:00:00.073

R代码:

library(xts)
ColClasses = c("character", "numeric", "character")
Data <- read.zoo("c:\\dat\\test2.csv", index.column = 3, sep = ";", header = TRUE, FUN = as.POSIXct, colClasses = ColClasses)
as.xts(Data)

结果:

                    name    amount
2010-09-23 19:00:00 "test1" "3"
2010-09-23 19:00:00 "test2" "9"

查看金额列包含字符数据,但应为数字。我的代码有什么问题吗?

最佳答案

zooxts的内部数据结构都是matrix,因此不能混合数据类型。

<小时/>

只需使用read.table读取数据:

Data <- read.table("file.csv", sep=";", header=TRUE, colClasses=ColClasses)

我注意到您的数据有亚秒级,因此您可能对 xts::align.time 感兴趣。此代码将获取数据并按秒为每个“name”创建一个带有一列的对象。

NewData <- do.call( merge, lapply( split(Data,Data$name), function(x) {
align.time( xts(x[,"amount"],as.POSIXct(x[,"datetime"])), n=1 )
}) )

如果您想在全局环境中创建对象 test1test2,您可以执行以下操作:

lapply( split(Data,Data$name), function(x) {
assign(x[,"name"], xts(x[,"amount"],as.POSIXct(x[,"datetime"])),envir=.GlobalEnv)
})

关于从 R 中的 CSV 文件读取 xts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3831026/

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