2017-07-12 43 views
0

我從數據框架(「TotalGuirvidig」)中設置了一個時間序列,其中我有3個主要關注列:「日期」,「動物」和我創建的第三列「Daily_Animals」是同一天所有動物數量的總和。我創建 「Daily_Animals」 unsing時間序列中的冗餘日期

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

大,但可以說的日期是2017年7月11日,我們觀察到40,23,和17個動物。現在,在Daily_Animals列中,我們得到80次3次的總和,每次原始觀察一次。

我沒有想太多這在第一,但因爲我轉移數據幀到時間序列

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 
+0

您可以發表一個數據的例子嗎? –

回答

0

如果你不」如果想爲每個動物的個數保留一條線,那麼也許你想使用dplyr :: summarize而不是mutate,因爲mutate只會添加一列,但會保留所有行?

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

或者你可以使用dplyr ::後發生變異不同,選擇你想保持不同的值從哪些列。

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

它有點難以看到什麼是最好的,因爲在您的示例數據不存在重複Daily_Animals,所以如果以上不工作,也許顯示出與重複段和所需的輸出?

+0

我在新表格中編輯以展示我所看到的更好。在這個例子中,我擔心的是R在設置時間序列的一天內計數80只動物3次,反對將每個日期看作是具有最多一組插入器 – Josiah

+0

我仍然不確定我明白你想要什麼(我假設你計劃在第二次編輯中的所有3個日期是相同的?)。當你同時使用group_by()和mutate()時,它會將該日期的所有三個值(如40 + 23 + 17)相加,但它會保留3次,因爲mutate不會刪除行。如果你只是想每日總計,所以它不會出現3次,你最好像我說的那樣使用group_by()%>%summarize()。對不起 - 你的例子還不夠清楚,我有一個更好的方法來幫助。 – user2738526