как агрегировать эти данные в R

У меня есть кадр данных в R со следующей структурой.

> testData
            date exch.code comm.code     oi
1     1997-12-30       CBT         1 468710
2     1997-12-23       CBT         1 457165
3     1997-12-19       CBT         1 461520
4     1997-12-16       CBT         1 444190
5     1997-12-09       CBT         1 446190
6     1997-12-02       CBT         1 443085
....
    77827 2004-10-26      NYME       967  10038
    77828 2004-10-19      NYME       967   9910
    77829 2004-10-12      NYME       967  10195
    77830 2004-09-28      NYME       967   9970
    77831 2004-08-31      NYME       967   9155
    77832 2004-08-24      NYME       967   8655

То, что я хочу сделать, является продуктом таблица шоу данной даты и товара общее oi через каждый код станций. Так, строки были бы составлены из

unique(testData$date)

и столбцы были бы

unique(testData$comm.code)

и каждая ячейка была бы общим oi по всему exch.codes в данный день.

Спасибо,

6
задан Arun 27 March 2013 в 23:58
поделиться

2 ответа

Пакет plyr хорош в этом, и вы должны сделать это с помощью одного вызова ddply(). Что-то вроде (не проверено)

ddply(testData, .(date,comm.code), function(x) sum(x$oi))

должно сработать.

11
ответ дан 8 December 2019 в 04:07
поделиться
# get it all aggregated
dfl <- aggregate(oi ~ date + comm.code, testData, sum)

# rearrange it so that it's like you requested
uc <- unique(df1$comm.code)
dfw <- with( df1, data.frame(data = unique(date), matrix(oi, ncol = length(uc))) )
names(dfw) <- c( 'date', uc)

Это будет намного быстрее, чем эквивалентная команда plyr. Кроме того, есть способы перегруппировки в one liners. Перестановка выполняется очень быстро.

10
ответ дан 8 December 2019 в 04:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: