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

これを記録するもう1つの方法は、月数を区切り文字で貼り付けることです。現時点では、これらはリストとして保存されています。

于 2012-09-14T00:10:47.020 に答える