2014-01-25 65 views
-4

我有這個data.frame:使用最大計數彙總數據幀

counts <- data.frame(year = sort(rep(2000:2009, 12)), month = rep(month.abb,10), count = sample(1:500, 120, replace = T)) 

前20行數據:

head(counts, 20) 

    year month count 
1 2000 Jan 14 
2 2000 Feb 182 
3 2000 Mar 462 
4 2000 Apr 395 
5 2000 May 107 
6 2000 Jun 127 
7 2000 Jul 371 
8 2000 Aug 158 
9 2000 Sep 147 
10 2000 Oct 41 
11 2000 Nov 141 
12 2000 Dec 27 
13 2001 Jan 72 
14 2001 Feb  7 
15 2001 Mar 40 
16 2001 Apr 351 
17 2001 May 342 
18 2001 Jun 81 
19 2001 Jul 442 
20 2001 Aug 389 

可以說,我嘗試計算使用這些數據的標準偏差通常的R代碼:

library(plyr) 
ddply(counts, .(month), summarise, s.d. = sd(count)) 

    month  s.d. 
1 Apr 145.3018 
2 Aug 140.9949 
3 Dec 173.9406 
4 Feb 127.5296 
5 Jan 148.2661 
6 Jul 162.4893 
7 Jun 133.4383 
8 Mar 125.8425 
9 May 168.9517 
10 Nov 93.1370 
11 Oct 167.9436 
12 Sep 166.8740 

這給出了每月平均值附近的標準偏差。我怎樣才能讓R在每個月的最大值附近輸出標準偏差?

+0

請提供「每月最大值附近的標準差」的數學定義。我不知道,那是什麼。 – Roland

+0

與平均值周圍的標準偏差相同,但每月使用最大值。 – luciano

+0

我重申:提供數學方程或參考。我總是熱衷於學習,我不知道你在說什麼。 – Roland

回答

1

你想要:「每月的最大值和平均值從這個最大值」[這與標準偏差不一樣]。

counts <- data.frame(year = sort(rep(2000:2009, 12)), month = rep(month.abb,10), count = sample(1:500, 120, replace = T)) 

library(data.table) 
counts=data.table(counts) 
counts[,mean(count-max(count)),by=month] 
0

這個問題含糊不清。如果要計算差異的最大標準差,可以使用以下代碼:

> library(plyr) 
> ddply(counts, .(month), summarise, sd = sd(count - max(count))) 
    month  sd 
1 Apr 182.5071 
2 Aug 114.3068 
3 Dec 117.1049 
4 Feb 184.4638 
5 Jan 138.1755 
6 Jul 167.0677 
7 Jun 100.8841 
8 Mar 144.8724 
9 May 173.3452 
10 Nov 132.0204 
11 Oct 127.4645 
12 Sep 152.2162