data.frame的Xts格式

data.frame的Xts格式,r,type-conversion,xts,R,Type Conversion,Xts,我有一个数据框,里面有两列。第一列包含POSIXct数据,第二列包含一些样本值整数。我一辈子都搞不懂如何将这个数据帧转换成xts 我的数据: structure(list(SampleDateTime = list(1422835200000, 1423353600000, 1423958400000, 1433030400000, 1433635200000, 1434326400000, 1434844800000, 1444521600000, 144573120000

我有一个数据框,里面有两列。第一列包含POSIXct数据,第二列包含一些样本值整数。我一辈子都搞不懂如何将这个数据帧转换成xts

我的数据:

structure(list(SampleDateTime = list(1422835200000, 1423353600000, 
    1423958400000, 1433030400000, 1433635200000, 1434326400000, 
    1434844800000, 1444521600000, 1445731200000, 1453593600000, 
    1.455408e+12, 1420934400000, 1424563200000, 1425772800000, 
    1426982400000, 1430006400000, 1.431216e+12, 1.440288e+12, 
    1448150400000, 1460851200000), SampleValue = list(9L, 3L, 
    2L, 1733L, 19L, 6L, 1L, 17L, 7L, 23L, 147L, 1L, 17L, 1L, 
    1L, 19L, 1L, 11L, 2L, 91L), Dttm = structure(c(1107216000, 
1107734400, 1108339200, 1117411200, 1118016000, 1118707200, 1119225600, 
1128902400, 1130112000, 1137974400, 1139788800, 1105315200, 1108944000, 
1110153600, 1111363200, 1114387200, 1115596800, 1124668800, 1132531200, 
1145232000), class = c("POSIXct", "POSIXt"), tzone = "")), row.names = c("feature$attributes", 
"feature$attributes1", "feature$attributes2", "feature$attributes3", 
"feature$attributes4", "feature$attributes5", "feature$attributes6", 
"feature$attributes7", "feature$attributes8", "feature$attributes9", 
"feature$attributes10", "feature$attributes11", "feature$attributes12", 
"feature$attributes13", "feature$attributes14", "feature$attributes15", 
"feature$attributes16", "feature$attributes17", "feature$attributes18", 
"feature$attributes19"), class = "data.frame")
> 
我使用此选项尝试进行转换:

q <- as.xts(t, order.by = t$Dttm, dateFormat="POSIXct", frequency=NULL, RECLASS=FALSE)

q正如注释中所指出的,您的数据采用了一种奇怪的格式,其中数据框的前两列本身是列表,而不是数字列,因此首先取消列出每列(这不会更改任何已经不是列表的列),给出
dat.u
,然后进行转换。我们假设
dat
是问题中通过
dput
显示的数据

dat.u <- replace(dat, TRUE, lapply(dat, unlist))
z <- read.zoo(dat.u, index = "Dttm")
x <- as.xts(z)

dat.u正如注释中所指出的,您的数据是一种奇怪的格式,其中数据框的前两列本身是列表,而不是数字列,因此首先取消列出每列(这不会更改任何已经不是列表的列),给出
dat.u
,然后进行转换。我们假设
dat
是问题中通过
dput
显示的数据

dat.u <- replace(dat, TRUE, lapply(dat, unlist))
z <- read.zoo(dat.u, index = "Dttm")
x <- as.xts(z)

dat.u您的数据格式不清楚。你能发布样本数据吗?请使用
dput(t)
的输出编辑问题。或者,如果输出的dput(头(t,20))太大
。另外,47047-11-07的年份是否是一个错误?您的数据中似乎有些奇怪
SampleDateTime
SampleValue
都是列表,而不是数字变量,因此XT不知道如何处理它们,因此出现了错误。不是所有数据帧都是列表的列表吗?它们可以,但通常是向量列表,这正是
as.xts
所期望的。正如@G.Grothendieck在下面的回答中指出的,在转换为xts之前,您需要取消列出这些变量。如果要查看数字或字符变量与列表变量之间的差异,可以在tidyverse中使用
starwars
数据集。在那里你会发现这两种类型的变量之间的差异。你的数据格式不清楚。你能发布样本数据吗?请使用
dput(t)
的输出编辑问题。或者,如果输出的dput(头(t,20))太大
。另外,47047-11-07的年份是否是一个错误?您的数据中似乎有些奇怪
SampleDateTime
SampleValue
都是列表,而不是数字变量,因此XT不知道如何处理它们,因此出现了错误。不是所有数据帧都是列表的列表吗?它们可以,但通常是向量列表,这正是
as.xts
所期望的。正如@G.Grothendieck在下面的回答中指出的,在转换为xts之前,您需要取消列出这些变量。如果要查看数字或字符变量与列表变量之间的差异,可以在tidyverse中使用
starwars
数据集。在这里,您将找到这两种类型的变量以查看差异。