-2

私はこのようなデータセットを持っています

year month age
2007 1     17
2007 1     18
2007 1     19
2007 1     30
2007 1     31
2007 2     18
2007 2     19
2007 2     30
2008 2     41
2008 2     52
2008 2     49  
2008 3     23
2008 3     19
2008 3     39

そして、年と月ごとに四分位グループを見つけようとして立ち往生しています。

結果は次のようになります。

2007 1 Q1 Q2 Q3 Q4
2007 2 Q1 Q2 Q3 Q4

等..

ありがとう

4

2 に答える 2

4

Aggregateはこれを行います。

> aggregate(.~year + month, data=age, FUN=fivenum)
  year month age.1 age.2 age.3 age.4 age.5
1 2007     1  17.0  18.0  19.0  30.0  31.0
2 2007     2  18.0  18.5  19.0  24.5  30.0
3 2008     2  41.0  45.0  49.0  50.5  52.0
4 2008     3  19.0  21.0  23.0  31.0  39.0


> dput(age)
structure(list(year = c(2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 
2007L, 2007L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L), month = c(1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L), age = c(17L, 
18L, 19L, 30L, 31L, 18L, 19L, 30L, 41L, 52L, 49L, 23L, 19L, 39L
)), .Names = c("year", "month", "age"), class = "data.frame", row.names = c(NA, 
-14L))
于 2012-11-24T01:26:17.747 に答える
3

あなたの質問は少し混乱しています。四分位数に分けるのに必要なカットポイントは 3 つだけです。では、Q1、Q2、Q3、Q4 列で本当に欲しいものは何ですか? カウントが必要な場合は、少し退屈に思えます。min、25th.pctile、median、75th.pctile、および max が必要であると仮定します。

do.call ( rbind, with( dfrm, tapply(age, interaction(year=year , month=month), quantile, 
                                                           probs=c(0, .25,.5, 0.75, 1) ) ) )
#---------------------
       0%  25% 50%  75% 100%
2007.1 17 18.0  19 30.0   31
2007.2 18 18.5  19 24.5   30
2008.2 41 45.0  49 50.5   52
2008.3 19 21.0  23 31.0   39
于 2012-11-24T01:38:24.797 に答える