Внутренняя структура данных zoo
и xts
равна matrix
, поэтому вы не можете смешивать типы данных.
Просто прочитайте данные с помощью read.table
:
Data <- read.table("file.csv", sep=";", header=TRUE, colClasses=ColClasses)
Я заметил, что ваши данные имеют субсекунды, поэтому вас может заинтересовать xts::align.time
. Этот код займет Data
и создаст один объект со столбцом для каждого "name"
по секундам.
NewData <- do.call( merge, lapply( split(Data,Data$name), function(x) {
align.time( xts(x[,"amount"],as.POSIXct(x[,"datetime"])), n=1 )
}) )
Если вы хотите создать объекты test1
и test2
в вашей глобальной среде, вы можете сделать что-то вроде:
lapply( split(Data,Data$name), function(x) {
assign(x[,"name"], xts(x[,"amount"],as.POSIXct(x[,"datetime"])),envir=.GlobalEnv)
})