1

一部の行で一部の列に値が繰り返される大きなデータ フレームがあります。繰り返される値を保持し、異なる値を合計したいと思います。以下は私のデータのサンプルです:

data<-data.frame(season=c(2008,2009,2010,2011,2011,2012,2000,2001),
             lic=c(132228,140610,149215,158559,158559,944907,37667,45724),
             client=c(174,174,174,174,174,174,175,175),
             qtty=c(31,31,31,31,31,31,36,26),
             held=c(60,65,58,68,68,70,29,23),
             catch=c(7904,6761,9236,9323.2,801,NA,2330,3594.5),
             potlift=c(2715,2218,3000,3887,750,NA,2314,3472))

.

season  lic client  qtty    held    catch   potlift
2008    132228  174 31  60  7904    2715
2009    140610  174 31  65  6761    2218
2010    149215  174 31  58  9236    3000
2011    158559  174 31  68  9323.2  3887
2011    158559  174 31  68  801 750
2012    944907  174 31  70  NA  NA
2000    37667   175 36  29  2330    2314
2001    45724   175 26  23  3594.5  3472

2011 年のシーズンが繰り返され、各変数 ( ) が と を除くことに注意してclient... heldください。( ) と sumと;の値を保持する必要があります。したがって、新しいデータ フレームは次の例のようになります。catchpotliftclient... heldcatchpotlift

    season  lic client  qtty    held    catch   potlift
2008    132228  174 31  60  7904    2715
2009    140610  174 31  65  6761    2218
2010    149215  174 31  58  9236    3000
2011    158559  174 31  68  10124.2 4637
2012    944907  174 31  70  NA  NA
2000    37667   175 36  29  2330    2314
2001    45724   175 26  23  3594.5  3472

を使用してそうしようとしましたaggregateが、この関数はすべてを合計します。どんな助けでも大歓迎です。

4

2 に答える 2

2

aggregate私にとってはうまくいくようですが、あなたが何をしようとしていたのかわかりません:

> aggregate(cbind(catch, potlift) ~ ., data, sum, na.action = "na.pass")
  season    lic client qtty held   catch potlift
1   2001  45724    175   26   23  3594.5    3472
2   2000  37667    175   36   29  2330.0    2314
3   2010 149215    174   31   58  9236.0    3000
4   2008 132228    174   31   60  7904.0    2715
5   2009 140610    174   31   65  6761.0    2218
6   2011 158559    174   31   68 10124.2    4637
7   2012 944907    174   31   70      NA      NA

ここでは、cbind集計する列を識別するために使用します。次に、他のすべての列を指定するか、単に「呼び出し.で言及されていない他のすべての列を使用する」ことを示すために使用できcbindます。

于 2013-08-12T07:33:13.160 に答える