2017-02-18 30 views
-2

我想計算並繪製使用dplyr和ggplot2隨時間變化的不同顏色的動物數量的變化。計算和繪圖時間間隔意味着

我對隨機日期的不同動物進行了觀察,所以我首先想將這些觀察結果分組爲4天括號,然後計算每個4天括號的平均顏色。爲了展示我的想法,我創建了Bracket.mean專欄,前幾部分以噱頭結果。如果可能,我想將這些方法添加到同一個數據框中(而不是創建一個新的數據框架或矢量)以供日後分析和繪圖。

而且我希望通過一段時間顯示方括號表示一些方差(SD或boxplots)以及日常觀測(也許是背景中觀測值的褪色疊加)。

下面是我正在使用的數據集的一部分(帶有構成「希望能夠鈣化的Bracket.mean」列)。 「計數」是特定「顏色」的給定「日期」上的動物數量。

Date Julian Count Color Bracket.color 
4/19/16 110 1 50 mean of 4/19-4/22 
4/19/16 110 1 50 mean of 4/19-4/22 
4/19/16 110 1 100 mean of 4/19-4/22 
4/20/16 111 4 50 mean of 4/19-4/22 
4/20/16 111 1 0 mean of 4/19-4/22 
4/20/16 111 2 100 mean of 4/19-4/22 
4/20/16 111 1 50 mean of 4/19-4/22 
4/20/16 111 2 100 mean of 4/19-4/22 
4/21/16 112 1 100 mean of 4/19-4/22 
4/21/16 112 2 50 mean of 4/19-4/22 
4/21/16 112 4 50 mean of 4/19-4/22 
4/21/16 112 1 100 mean of 4/19-4/22 
4/21/16 112 2 50 mean of 4/19-4/22 
4/21/16 112 1 0 mean of 4/19-4/22 
4/22/16 113 2 0 mean of 4/19-4/22 
4/22/16 113 4 50 mean of 4/23-4/26 
4/23/16 114 6 0 mean of 4/23-4/26 
4/23/16 114 1 50 mean of 4/23-4/26 
4/24/16 115 2 0 mean of 4/23-4/26 
4/26/16 117 5 0 mean of 4/23-4/26 
4/30/16 121 1 50 
5/2/16 123 1 NA 
5/2/16 123 1 50 
5/7/16 128 2 0 
5/7/16 128 3 0 
5/7/16 128 3 0 
5/8/16 129 4 0 
5/8/16 129 1 0 
5/10/16 131 1 50 
5/10/16 131 4 50 
5/12/16 133 1 0 
5/13/16 134 1 50 
5/14/16 135 1 0 
5/14/16 135 2 50 
5/14/16 135 2 0 
5/14/16 135 1 0 
5/17/16 138 1 0 
5/17/16 138 2 0 
5/23/16 144 1 0 
5/24/16 145 4 0 
5/24/16 145 1 0 
5/24/16 145 1 0 
5/27/16 148 3 NA 
5/27/16 148 1 0 
5/27/16 148 1 50 

任何幫助將不勝感激。首先十分感謝!

回答

0

像這樣的東西應該讓你開始。

library(dplyr) 
df <- df %>% mutate(Date = as.Date(Date, format='%m/%d/%y'), 
        Start = as.Date(cut(Date, breaks= seq(min(Date), max(Date)+4, by = 4)))) %>% 
    mutate(End = Start+3) %>% 
    group_by(Start,End) %>% 
    summarise(meanColor = mean(Color, na.rm=T), 
       sdColor = sd(Color, na.rm=T)) 
df 
#Source: local data frame [10 x 4] 
#Groups: Start [?] 
#  Start  End meanColor sdColor 
#  <date>  <date>  <dbl> <dbl> 
#1 2016-04-19 2016-04-22 56.25000 35.93976 
#2 2016-04-23 2016-04-26 12.50000 25.00000 
#3 2016-04-27 2016-04-30 50.00000  NA 
#4 2016-05-01 2016-05-04 50.00000  NA 
#5 2016-05-05 2016-05-08 0.00000 0.00000 
#6 2016-05-09 2016-05-12 33.33333 28.86751 
#7 2016-05-13 2016-05-16 20.00000 27.38613 
#8 2016-05-17 2016-05-20 0.00000 0.00000 
#9 2016-05-21 2016-05-24 0.00000 0.00000 
#10 2016-05-25 2016-05-28 25.00000 35.35534 

然後繪製使用,

library(ggplot) 
ggplot(df) + geom_line(aes(Start,meanColor)) 
+0

大,非常感謝!還有兩件事情需要注意:1.您是否也可以在4天平均值計算中納入多個動物在特定場合記錄爲特定「顏色」階段的事實? - 如在「計數」欄中給出的(例如,在'日期'4/20中,有5(= 4 + 1)個「顏色」類型50的動物)。 2.新的'Start'和'meanColor'變量是否可以添加到同一個d.f.作爲原始的「顏色」觀察值,以便我可以在同一個圖中繪製'平均顏色'和單個'顏色'觀察值(如果可能,則顯示所有觀察值,如果'計數'> 1)?謝謝! – Kestrel1

+0

將'Color'添加到'group_by()'以獲得額外的維度。如果你想要將數據添加到原始數據框中,那麼用'mutate()'替換'summarize()' –

+0

好的,mutate工作正常!但是至於我的另一個問題#1:與每行代表一次個體動物觀察相反,我有一些動物觀察到這種顏色。有時它只是一個人(計數= 1),但有時候更多(例如4/22,有4個不同的人具有顏色50:計數= 4)。所以我試圖在計算中加入'Count'變量(命令group_by(Start,End)很好)。我是否需要複製並粘貼4/22個觀察等相同的三行以修復它,或者有其他方法嗎?Thx – Kestrel1