时间序列中的冗余日期

时间:2017-07-12 03:27:05

标签: r time-series repeat

我在数据框架中设置了一个时间序列(" TotalGuirvidig"),其中我有3个主要感兴趣的列:"日期","动物"和我创建的第三列名为" Daily_Animals",是同一天所有动物计数的总和。我创造了" Daily_Animals" unsing

TotalGuirvidig <- Guirvidig %>% group_by(Date) %>% mutate(Daily_Animals = sum(Animals))

很好,但是我们说日期是07-11-2017,我们观察了40只,23只和17只动物。现在,在Daily_Animals列中,我们得到80次的总和,每次原始观察一次。

我一开始并没有想太多,但我正在将数据框转换为时间序列

GTS <- zoo(TotalGuirvidig$Daily_Animals, order.by=as.Date(TotalGuirvidig$Date, format='%Y/%m/%d'))
ts(GTS)

我注意到同一日期多次观察的日期多次出现,因为同一日期的每次观察都有相同的Daily_Animal总和。

我计划做一些预测,我担心这些重复的每日总和会抛弃我的预测。在建立我的时间序列时,是否有某种方法可以让R忽略同一日期的重复总和?

编辑:以下是数据框的示例

Year  Week       Date  Location Animals           From            To     Notes Daily_Animals
<int> <int>     <date>     <chr>   <int>          <chr>         <chr>     <chr>         <int>
1  2010    31 2010-08-01 GUIRVIDIG     580 Bongor – Tchad BANKI NIGERIA       RAS           580
2  2010    32 2010-08-08 GUIRVIDIG     780  Glenden Tchad BANKI NIGERIA       RAS           780
3  2010    33         NA GUIRVIDIG      NA           <NA>          <NA>      <NA>            NA
4  2010    34 2010-08-22 GUIRVIDIG     680 Bongor – Tchad BANKI NIGERIA   2 voles           680
5  2010    34 2010-08-23 GUIRVIDIG     880  Glenden Tchad BANKI NIGERIA       RAS           880
6  2010    35 2010-08-29 GUIRVIDIG     495 Bongor – Tchad BANKI NIGERIA       RAS           495
7  2010    35 2010-08-30 GUIRVIDIG     506  Glenden Tchad BANKI NIGERIA 1 malades           506
8  2010    36 2010-09-06 GUIRVIDIG     262   kijabe-tchad BANKI NIGERIA       RAS           262
9  2010    37 2010-09-13 GUIRVIDIG      70  Glenden Tchad BANKI NIGERIA       RAS            70
10  2010    38         NA GUIRVIDIG      NA           <NA>          <NA>      <NA>            NA
# ... with 484 more rows

Edit2:下面是一个实际的例子,它实际上演示了如何编写新列

Year  Week       Date  Location Animals           From            To     Notes Daily_Animals
<int> <int>     <date>     <chr>   <int>          <chr>         <chr>     <chr>         <int>
1  2010    31 2010-08-01 GUIRVIDIG     40 Bongor – Tchad BANKI NIGERIA       RAS           80
2  2010    32 2010-08-01 GUIRVIDIG     23  Glenden Tchad BANKI NIGERIA       RAS           80
3  2010    34 2010-08-21 GUIRVIDIG     17 Bongor – Tchad BANKI NIGERIA   2 voles           80

1 个答案:

答案 0 :(得分:0)

如果您不想为每个动物计数保留一行,那么您可能想要使用dplyr :: summarize而不是mutate,因为mutate只会添加一列但会保留所有行?

?summarise 
TotalGuirvidig <- Guirvidig %>% group_by(Date) %>% summarise(Daily_Animals = sum(Animals))

或者您可以在mutate之后使用dplyr :: distinct,并选择要保留不同值的列。

?distinct
TotalGuirvidig <- Guirvidig %>% group_by(Date) %>% mutate(Daily_Animals = sum(Animals)) %>%
          distinct(Date, .keep_all = TRUE)

有点难以确切地知道什么是最好的,因为在你的示例数据中没有重复的Daily_Animals,所以如果上面的不工作可能会显示一个带有重复项和所需输出的部分?