1

对于从 SQL 查询填充的数据框,如下所示:

Company        Month         Total_Count
ABC            2012-03         10
ABC            2009-01         1
DEF            2011-01         29
GHI            2001-09         10
GHI            2008-01         9
GHI            2010-09         100

我想提出一份总结报告,输出如下:

Company          Total         Months
ABC              11            10         1
DEF              29            29
GHI              119           10      9    100

其中 columnTotal是所有月份的总和
, columnMonths是该组织遇到的每个月的单独计数。我很想看看是否有可能以某种方式挤进实际的月份。就像是:

Company          Total         Months
                               2009-01    2012-03
ABC              11            10      1
                               2011-01
DEF              29            29
                               2001-09   2008-01   2010-09
GHI              119           10        9         100

到目前为止,我只能通过执行以下操作获得上述所需结果的前 2 列:

df1 <- ddply(resultSet, .(company_name), summarize, sum(as.numeric(total_count)))

但我不确定如何附加个别月份的信息

4

2 回答 2

1
library(reshape2)
res <- ddply(resultSet, .(Company), summarize, Total = sum(Total_Count))
# if value.var is not specified, dcast uses the last column. see ?guess_value
months <- dcast(resultSet, Company ~ Month, value.var = "Total_Count", sum)
join(res, months, by = "Company")
  Company Total 2001-09 2008-01 2009-01 2010-09 2011-01 2012-03
1     ABC    11      NA      NA       1      NA      NA      10
2     DEF    29      NA      NA      NA      NA      29      NA
3     GHI   119      10       9      NA     100      NA      NA

在这个问题的背景下,具有聚合功能很重要。

于 2012-09-12T21:49:46.340 回答
0

既然你没有给它起名字,我选择了“cdf”

agg1 <- aggregate(namcounts, cdf['Company'], function(x) sumC=sum(x) )
aggC <- lapply( split(namcounts, cdf['Company']), function(x)  listC= list(x) ) 
agg1$clist <- sapply(aggC, "[[" ,1)
agg1
  Company   x      clist
1     ABC  11      10, 1
2     DEF  29         29
3     GHI 119 10, 9, 100

记录这一点的另一种方法是使用分隔符粘贴月份计数。目前这些被存储为一个列表。

于 2012-09-14T00:10:47.020 回答