R.汇总数据而不合并

R.汇总数据而不合并,r,dataframe,plyr,summarization,R,Dataframe,Plyr,Summarization,我有一个数据框架(df)的目标得分对各球队的日期 gamedate teamID Gls 1992-08-22 CHL 3 1992-08-22 MNU 1 1992-08-23 ARS 0 1992-08-23 LIV 2 1992-08-24 MNU 0 1992-08-25 LIV 2 1992-08-26 ARS 0 1992-08-26 CHL 0 我想制作一个汇总表,列出玩过的游戏数量和数量 这些球队在每一天的比赛中都击败了对手 ga

我有一个数据框架(df)的目标得分对各球队的日期

gamedate teamID Gls
 1992-08-22  CHL  3
 1992-08-22  MNU  1
 1992-08-23  ARS  0
 1992-08-23  LIV  2
 1992-08-24  MNU  0
 1992-08-25  LIV  2
 1992-08-26  ARS  0
 1992-08-26  CHL  0
我想制作一个汇总表,列出玩过的游戏数量和数量 这些球队在每一天的比赛中都击败了对手

gamedate   games blanks
 1992-08-22   2     0
 1992-08-23   2     1
 1992-08-24   1     1
 1992-08-25   1     0
 1992-08-26   2     2
我可以使用ddply分别获得游戏和空白

df.a <- ddply(df,"gamedate",function(x) c(count=nrow(x)))
df.b <- ddply(subset(df,Gls==0),"gamedate",function(x) c(count=nrow(x)))

df.a您只需使用
摘要

读取以下文件中的数据:

   dat <- read.table(textConnection("gamedate teamID Gls
  1992-08-22  CHL  3
  1992-08-22  MNU  1
  1992-08-23  ARS  0
  1992-08-23  LIV  2
  1992-08-24  MNU  0
  1992-08-25  LIV  2
  1992-08-26  ARS  0
  1992-08-26  CHL  0"),sep = "",header = TRUE)

您唯一缺少的是将函数包装在
data.frame()
调用中,并为它们指定列名。。。并且列名是可选的:)

我使用@joran的dat data.frame来测试我的答案

ddply( dat, "gamedate", function(x) data.frame( 
                                      tot = nrow( x ), 
                                      blanks = nrow( subset(x, Gls == 0 ) ) 
                                              ) 
     )

顺便说一句,我上面有趣的格式只是为了防止它在屏幕上滚动,并帮助说明我是如何真正将您已经创建的功能组合在一起的

使用简单的
聚合的另一种解决方案
。我正在使用joran的
dat

agg <- aggregate(cbind(1, dat$Gls==0), list(dat$gamedate), sum)
names(agg) <- c("gamedate", "games", "blanks")
agg

聚合解决方案的agg+1。你能解释一下cbind(1,…)在做什么吗?它只是作为一个“计数器”?@DWin
cbind
添加一列1,然后他可以求和以获得行数的计数。这样,两个值都是总和。hmmm。我和塔普利做过类似的事情,所以我想这对我来说应该更明显。早起鸟等等。谢谢你。
agg <- aggregate(cbind(1, dat$Gls==0), list(dat$gamedate), sum)
names(agg) <- c("gamedate", "games", "blanks")
agg