簡體   English   中英

如何在R中聚合這些數據

[英]how to aggregate this data in 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)

並且每個單元格將是給定日期所有exch.codes的總oi。

謝謝,

plyr包很擅長這個,你應該用一個ddply()調用來完成它。 像(未經測試的)

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

應該管用。

# 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命令快得多。 並且,有一些方法可以在一個襯里中重新排列它。 重新排列部分非常快。

一個data.table解決方案

library(data.table)
DT <- data.table(testData)
DT[,sum(oi), by = list(date,comm.code)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM