Как суммировать несколько столбцов внутри объекта зоопарка - PullRequest
1 голос
/ 19 декабря 2011

Это должно быть исключительно просто.У меня есть объект в зоопарке с серией 500 раз (у каждого свой продукт) и 250 периодами продаж.Объект зоопарка совершенно прямоугольный, все серии содержат наблюдения в каждый момент времени.Мой индексный столбец очень прост: 1 ... 250,

Моя сложность заключается в попытке агрегировать все временные ряды для формирования серии "Всего продаж".

Я пробовалиспользуя агрегат, который, кажется, сосредоточен на агрегировании строк, например, дней в месяцы.Но я хочу сохранить каждый период времени, просто объединить временные ряды вместе.Это упрощенная версия моего объекта зоопарка, показанная ниже только с 5 сериями.

head(z.all)

     1        2         3        4        5
 1 1232.205 1558.056  993.9784 1527.066 359.6946

 2 1262.194 1665.084 1092.0105 1834.313 484.5073

 3 1301.034 1528.607  900.4158 1587.548 525.5191

 4 1014.082 1352.090 1085.6376 1785.034 490.9164

 5 1452.149 1623.015 1197.3709 1944.189 600.5150

 6 1463.359 1205.948 1155.0340 1528.887 556.6371

Когда я пытаюсь агрегировать, используя любую из следующих 2 команд, я получаю в точности те же данные, что и в моем исходном объекте зоопарка!!

 aggregate(z.all[,1:num.series], index(z.all), sum)

 aggregate(z.all, index(z.all), sum)

Однако я могу агрегировать, хотя это не реально для 500 столбцов!Я хочу по возможности избегать использования цикла.

 z.all[,1] + z.all[,2]

Извиняюсь, если это неправильный протокол, это мой первый пост на этом сайте.

1 Ответ

3 голосов
/ 19 декабря 2011

Надеюсь, я правильно понял, что вы хотите.Но если вы ищете строку:

 rowSums(z.all)

непосредственно из пакета base.(* * 1005).Эта функция добавляет все значения в одну строку:

D<-cbind(rep(1,10),c(1:10))
 colSums(D)
  [1] 10 55
 rowSums(D)
  [1]  2  3  4  5  6  7  8  9 10 11 

в противном случае будет colSums(), который будет суммировать каждый столбец.

...