Просто потому, что мне трудно tapply()
обернуть свой мозг, мне нравится использовать plyr
для таких типов вещей:
## make up some data
## you get better/faster/more answers if you do this bit for us :)
dates <- seq(Sys.Date(), Sys.Date() + 5, by = 1)
Kandula_for_n <- data.frame(date_only = sample( dates + 5, 10, replace=TRUE ) , dist=rnorm(10) )
require(plyr)
ddply(Kandula_for_n, "date_only", function(x) data.frame(x, ndist=nrow(x)) )
Это даст вам что-то вроде:
date_only dist ndist
1 2011-10-30 0.2434168 5
2 2011-10-30 -0.9361780 5
3 2011-10-30 1.4593197 5
4 2011-10-30 -0.1851402 5
5 2011-10-30 0.6652419 5
6 2011-10-31 0.8876420 1
7 2011-11-03 0.5087175 2
8 2011-11-03 -1.0065152 2
9 2011-11-04 0.4236352 2
10 2011-11-04 0.4535686 2
строка ddply
:
ddply(Kandula_for_n, "date_only", function(x) data.frame(x, ndist=nrow(x)) )
принимает входные данные, группирует их по полю date.only
и для каждого уникального значения применяет анонимную функцию ккадр данных состоит только из записей с одинаковым значением для date_only
.Моя анонимная функция просто берет data.frame x
и добавляет столбец с именем ndist
, который является числом строк в x
.