我正在尝试将存储在data.table
中的季度数据转换为面板data.frame,以便为进一步分析做好准备。但是,当使用季度日期作为时间维度时,显然存在问题。
我可以将它们转换为日期,数字或字符,但它不会被is.pconsecutive()
识别为季度时间序列,这会阻止我使用某些函数。
library(zoo)
library(data.table)
dt <- structure(list(Global.Company.Key = c(1380L, 1380L, 1380L, 1380L,
1380L, 1380L, 1380L, 1380L), Calendar.Data.Year.and.Quarter = structure(c(2000,
2000.25, 2000.5, 2000.75, 2001, 2001.25, 2001.5, 2001.75), class = "yearqtr"),
Calendar.Year.Quarter.Integer = c(10957L, 11048L, 11139L,
11231L, 11323L, 11413L, 11504L, 11596L), Year.Date = structure(c(10957,
11048, 11139, 11231, 11323, 11413, 11504, 11596), class = "Date")), .Names = c("Global.Company.Key",
"Calendar.Data.Year.and.Quarter", "Calendar.Year.Quarter.Integer",
"Year.Date"), row.names = c(NA, -8L), class = c("data.table",
"data.frame"))
# defined the date index as integer
pdt <- pdata.frame(dt, index = c("Global.Company.Key", "Calendar.Year.Quarter.Integer"))
is.pconsecutive(pdt)
1380
FALSE
显然,通过检查数据点之间的距离是否规则间隔和1来分析时间维度。从手册:&#34;为了评估连续性,时间维度被解释为数字,并且测试数据是规则间隔的序列,每个个体的时间段之间的距离为1(对于每个个体的时间维度)可以解释为序列t,t + 1,t + 2,...其中t是整数)。&#34; 那么转换年度季度时间序列的最佳和最强大的方法是什么?
答案 0 :(得分:2)
pdata.frame
不知道季度数据,也不知道zoo
提供的设施包。用作索引的变量被强制转换为因子变量。
通过分析is.pconsecutive
的作用:在将因子首先强制转换为字符然后转换为数字之后,您需要一个时间变量作为索引,这是一个“有意义的”整数系列(这就是is.pconsecutive
一样)。
对于您的示例,您需要一个为此提供常规序列的索引:
as.numeric(as.character(index(pdt)[[2]]))
。
对于你问题中的数据,你得到:
[1] 10957 11048 11139 11231 11323 11413 11504 11596
,未评估为连续。
对于答案中的数据,您可以获得:
[1] 1 2 3 4 5 6 7 8
,被评估为连续。
答案 1 :(得分:0)
我想出了一个问题的解决方案,这个问题就足够了,只适用于这个特定的数据集,因为如果涵盖不同的时间范围,它需要进行调整。 我基本上相对于数据集中的第一个季度转换所有季度,然后只计算每个季度的整数并将其用作时间索引。
<a-entity id="main-camera-wrapper" position="0 0 0" rotation="0 30 0">
<a-camera id="main-camera" visible="true" wasd-controls="enabled: false; easing: 10; acceleration: 75; fly: false;" cursor="rayOrigin: mouse;" raycaster="objects: .clickable" >
<a-box logo="normal: img/button_meet_the_team.png; hover: img/button_meet_the_team_hover.png;" position="-4.5 -2.2 -3" rotation="0 0 0" scale="0.1 0.1 0.1" color="#FFFFFF" opacity="1" class="clickable">
<a-image src="img/button_meet_the_team.png" scale="15 5 10"></a-image>
</a-box>
<a-box mute-sound position="4.8 -2.2 -3" rotation="0 0 0" scale="0.1 0.1 0.1" color="#FFFFFF" opacity="1" class="clickable">
<a-image src="img/sound-on.png" scale="5 5 5"></a-image>
</a-box>
<a-box id="title" position="-1.5 2.2 -3" color="#FFFFFF" opacity="0">
<a-text position="0.015 -0.015 0" value="Front Door" width="10.8" color="#000000" opacity="0.3" font="font/Eurosti.fnt" fontImage="font/Eurosti.png"></a-text>
<a-text position="0 0 0" value="Front Door" width="10.8" color="#FFFFFF" font="font/Eurosti.fnt" fontImage="font/Eurosti.png"></a-text>
</a-box>
</a-camera>
</a-entity>
这是一种解决方法,但我认为并非如此糟糕。