рассчитать условные средние только на основе одного столбца в R - PullRequest
4 голосов
/ 21 февраля 2012

У меня есть такой фрейм данных:

block   plot    date    data
1   1   aug 11.95171507
1   1   aug 18.41451063
1   2   aug 9.506155236
1   2   aug 13.26259947
1   3   aug 17.53616835
1   3   sep 15.40950767
2   1   sep 23.03616678
2   1   sep 17.07067258
2   2   sep 11.58278798
2   2   sep 13.15443304

Я хотел бы рассчитать средние данные на графике на основе блока и даты. В конце концов, я хотел бы иметь 5 средств. Спасибо за вашу помощь.

Ответы [ 3 ]

5 голосов
/ 21 февраля 2012

Вероятно, путь наименьшего сопротивления - использовать plyr:

library(plyr)
ddply(yourData, c("block", "date"), summarize, outVal = mean(data))

Вы можете делать подобные вещи с data.table, aggregate, by и, возможно, целым множеством других функций.,Потратьте несколько минут, чтобы просмотреть тег R здесь, на SO.

4 голосов
/ 21 февраля 2012

Посмотрите на aggregate.Я думаю, это то, что вы хотите.

d <- data.frame(block=c(1,1,1,1,1,1,2,2,2,2), plot=c(1,1,2,2,3,3,1,1,2,2), date=c(rep('aug',5),rep('sep',5)),
   data=c(11.95171507, 18.41451063, 9.506155236, 13.26259947, 17.53616835, 15.40950767, 23.03616678,
   17.07067258, 11.58278798, 13.15443304))

aggregate(x = d$data, by = list(d$block, d$date), FUN = "mean")
1 голос
/ 21 февраля 2012

Предположим, что ваши данные хранятся во фрейме данных с именем «ДАННЫЕ».

> DATA

   block plot date      data
1      1    1  aug 11.951715
2      1    1  aug 18.414511
3      1    2  aug  9.506155
4      1    2  aug 13.262599
5      1    3  aug 17.536168
6      1    3  sep 15.409508
7      2    1  sep 23.036167
8      2    1  sep 17.070673
9      2    2  sep 11.582788
10     2    2  sep 13.154433

Затем мы можем ввести следующее:

> aggregate(DATA$data, list(Block = DATA$block, Date = DATA$date), mean)

  Block Date        x
1     1  aug 14.13423
2     1  sep 15.40951
3     2  sep 16.21102
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...