2015-01-10 5 views
1

Я хотел бы объединить свои данные.Агрегатная функция в R, не работающая с POSIXct

time<- as.POSIXct(c("2014-12-10 00:11:02","2014-12-10 00:11:02","2014-12-10 00:11:03"), tz= "GMT") 
shares<-c(1,2,3) 
price<-c(48, 48, 49) 
dat<-data.frame(time= as.factor(time), price= price, size =shares) 
dat 

вот что Даты выглядят следующим образом:

   time price size 
1 2014-12-10 00:11:02 48 1 
2 2014-12-10 00:11:02 48 2 
3 2014-12-10 00:11:03 49 3 

теперь я пытаюсь объединить Даты

aggregate(x=dat, by = list(as.factor(dat$size)), formula = cbind(dat$time, dat$price) ~ as.numeric(dat$size), FUN="sum") 

Я хочу, чтобы объединить столбец акций в Датах по времени и цене, так это выглядит например:

time     price size 
2014-12-10 00:11:02 48 3 
2014-12-10 00:11:03 49 3 

любые идеи? Спасибо.

+1

Вам следует избегать использования cbind на векторах другого класса. Кроме того, вы получили заказ RHS и LHS назад. –

ответ

3

Либо

aggregate(x = dat$size, by = list(time, price), FUN = "sum") 

       Group.1 Group.2 x 
1 2014-12-10 00:11:02  48 3 
2 2014-12-10 00:11:03  49 3 

Или

aggregate(size ~ time + price, data = dat, FUN = "sum") 

       time price size 
1 2014-12-10 00:11:02 48 3 
2 2014-12-10 00:11:03 49 3 

Они соответствуют Документами ?aggregate, которые дают возможные формы:

aggregate(x, by, FUN, ..., simplify = TRUE) 
aggregate(formula, data, FUN, ..., subset, na.action = na.omit) 

Попытка смешивать эти формы вместе.

+0

Это вопрос вкуса, мне нравится dplyr как альтернатива 'dat%>% group_by (время, цена)%>% summary (size = sum (size))' – ckluss

+0

Действительно, но вопрос был «Агрегатная функция в R not за работой...". – nacnudus