Суммирование строк на основе определенных комбинаций факторов

Вероятно, это глупый вопрос, но я прочитал главу Кроули о фреймах данных и прошерстил Интернет, но пока ничего не смог заставить работать.

Вот пример набора данных, аналогичный моему.:

> data<-data.frame(site=c("A","A","A","A","B","B"), plant=c("buttercup","buttercup",
"buttercup","rose","buttercup","rose"), treatment=c(1,1,2,1,1,1), 
plant_numb=c(1,1,2,1,1,2), fruits=c(1,2,1,4,3,2),seeds=c(45,67,32,43,13,25))
> data
  site     plant treatment plant_numb fruits seeds
1    A buttercup         1          1      1    45
2    A buttercup         1          1      2    67
3    A buttercup         2          2      1    32
4    A      rose         1          1      4    43
5    B buttercup         1          1      3    13
6    B      rose         1          2      2    25  

Что я хотел бы сделать, так это создать сценарий, в котором «семена» и «плоды» суммируются всякий раз, когда существуют уникальные комбинации участка, растения, обработки и растения _. В идеале это должно привести к сокращению строк,но сохранение исходных столбцов (т.е. мне нужно, чтобы приведенный выше пример выглядел так:)

  site     plant treatment plant_numb fruits seeds
1    A buttercup         1          1      3   112
2    A buttercup         2          2      1    32
3    A      rose         1          1      4    43
4    B buttercup         1          1      3    13
5    B      rose         1          2      2    25

Этот пример довольно простой (мой набор данных ~5000 строк ), и хотя здесь вы видите только два строки, которые необходимо суммировать, количество строк, которые необходимо суммировать, варьируется и находится в диапазоне от 1 до ~45.

Я пробовал rowsum ()и tapply ()с довольно мрачными результатами, поэтому far (ошибки говорят мне, что эти функции не имеют значения для факторов ), поэтому, если бы вы могли указать мне правильное направление, я был бы очень признателен!

Большое спасибо!

11
задан Matt Dowle 2 September 2012 в 23:54
поделиться