我想用观察日期和时间的频率制作一个时间序列。原始数据如下所示:
dd-mm-yyyy hh:mm
28-2-2018 0:12
28-2-2018 11:16
28-2-2018 12:12
28-2-2018 13:22
28-2-2018 14:23
28-2-2018 14:14
28-2-2018 16:24
R的日期和时间格式有误,因此我必须对其进行调整:
extracted_times <- as.POSIXct(bedrijf.CSV$viewed_at, format = "%d-%m-%Y %H:%M")
我使用以下代码在表中按频率对数据进行排序:
timeserieswithoutzeros <- table(extracted_times)
数据现在看起来像这样:
2018-02-28 00:11:00 2018-02-28 01:52:00 2018-02-28 03:38:00
1 2 5
2018-02-28 04:10:00 2018-02-28 04:40:00 2018-02-28 04:45:00
2 1 1
您可能会看到有很多未观察到的日期和时间。
我想以0的频率添加这些未观察到的日期和时间。
我尝试了完整函数,但错误指出它不能最好地使用,因为我使用了as.POSIXct()
。
有什么想法吗?
答案 0 :(得分:1)
正如@ eric-lecoutre在评论中所提到的那样,您可以使用<DataGrid Name="PredicateStatementDataGrid" GridLinesVisibility="All"
HeadersVisibility="All" AutoGenerateColumns="false">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding IsBold}" Value="true">
<Setter Property="Fontweight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
</Style>
<DataGrid.Columns>
<DataGridTextColumn Header="ID #" Width="35" IsReadOnly="True"
Binding="{Binding ID}">
</DataGridTextColumn>
<DataGridTextColumn Header="Predicate Statement" Width="300"
Binding="{Binding Statement}">
IsReadOnly="True">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
将观察结果与最早开始于最后一个日期的序列结合起来,并使用频率表减去1。
seq
答案 1 :(得分:0)
以下可能是您想要的。
首先,将数据强制转换为"POSIXt"
类,并以1分钟为步长创建min
和max
之间的所有日期/时间序列。
bedrijf.CSV$viewed_at <- as.POSIXct(bedrijf.CSV$viewed_at, format = "%d-%m-%Y %H:%M")
new <- seq(min(bedrijf.CSV$viewed_at),
max(bedrijf.CSV$viewed_at),
by = "1 mins")
tmp <- data.frame(viewed_at = new)
现在查看这些值是否在原始数据中。
tmp$viewed <- tmp$viewed_at %in% bedrijf.CSV$viewed_at
tbl <- xtabs(viewed ~ viewed_at, tmp)
sum(tbl != 0)
#[1] 7
最终清理。
rm(new, tmp)