R:在数据帧中按行统计满足多个条件的观察值
我有一个汇总表,其中包含存储、产品和日期。我需要创建一个第四列,统计记录表中满足汇总表每行多个条件的观察数 这是我的汇总表R:在数据帧中按行统计满足多个条件的观察值,r,R,我有一个汇总表,其中包含存储、产品和日期。我需要创建一个第四列,统计记录表中满足汇总表每行多个条件的观察数 这是我的汇总表 > Summary_Table Store Product Date Chain1 ABC 1/1/2007 Chain1 ABC 1/1/2008 Chain1 ABC 1/1/2009 Chain1 ABC 1/1/2010 Chain1 DEF 1/1/2007 Chain1 DEF 1/1/200
> Summary_Table
Store Product Date
Chain1 ABC 1/1/2007
Chain1 ABC 1/1/2008
Chain1 ABC 1/1/2009
Chain1 ABC 1/1/2010
Chain1 DEF 1/1/2007
Chain1 DEF 1/1/2008
Chain1 DEF 1/1/2009
Chain1 DEF 1/1/2010
Chain2 ABC 1/1/2007
Chain2 ABC 1/1/2008
Chain2 ABC 1/1/2009
Chain2 ABC 1/1/2010
Chain2 DEF 1/1/2007
Chain2 DEF 1/1/2008
Chain2 DEF 1/1/2009
Chain2 DEF 1/1/2010
这是我的记录表
> Records_Table
Store Product Eval_Date
Chain1 DEF 2/13/2008
Chain2 ABC 1/15/2009
Chain1 DEF 5/13/2009
Chain2 ABC 3/15/2007
Chain1 DEF 5/14/2010
Chain2 DEF 10/10/2010
Chain1 ABC 11/1/2007
Chain2 ABC 10/1/2008
Chain2 DEF 6/1/2009
Chain2 DEF 7/1/2010
Chain2 ABC 8/1/2009
Chain1 ABC 2/1/2009
所以我需要在汇总表中创建第四列,统计记录表中的观察数。符合汇总表每行以下条件的
商店应该是平等的,产品应该是平等的,并为日期;如果(记录表$Eval\u日期)大于(汇总表$Date)
因此,汇总表中所需的输出是
> Summary_Table
Store Product Date Count
Chain1 ABC 1/1/2007 2
Chain1 ABC 1/1/2008 1
Chain1 ABC 1/1/2009 1
Chain1 ABC 1/1/2010 0
Chain1 DEF 1/1/2007 3
Chain1 DEF 1/1/2008 3
Chain1 DEF 1/1/2009 2
Chain1 DEF 1/1/2010 1
Chain2 ABC 1/1/2007 4
Chain2 ABC 1/1/2008 3
Chain2 ABC 1/1/2009 2
Chain2 ABC 1/1/2010 0
Chain2 DEF 1/1/2007 3
Chain2 DEF 1/1/2008 3
Chain2 DEF 1/1/2009 3
Chain2 DEF 1/1/2010 2
我假设汇总表中的日期列是按年份分组的。如果是,使用lubridate和dplyr:
library(dplyr)
library(lubridate)
Records <- Records %>%
mutate(Eval_Date = mdy(Eval_Date), Year = year(Eval_Date))
summary <- Records %>%
group_by(Store, Product, Year) %>%
summarise(Count = n()) %>%
库(dplyr)
图书馆(lubridate)
记录%
变异(评估日期=mdy(评估日期),年份=年份(评估日期))
汇总%
分组依据(商店、产品、年份)%>%
汇总(计数=n())%>%
您可以使用数据进行左连接
library(data.table)
setDT(recdt)[,Eval_Date:=as.Date(Eval_Date,format="%m/%d/%Y")]
setDT(sumdt)[,Date:=as.Date(Date,format="%m/%d/%Y")]
recdt[sumdt,.N, on=c("Store","Product","Eval_Date>Date"), by=.EACHI]
输出-
Store Product Eval_Date N
1: Chain1 ABC 2007-01-01 2
2: Chain1 ABC 2008-01-01 1
3: Chain1 ABC 2009-01-01 1
4: Chain1 ABC 2010-01-01 0
5: Chain1 DEF 2007-01-01 3
6: Chain1 DEF 2008-01-01 3
7: Chain1 DEF 2009-01-01 2
8: Chain1 DEF 2010-01-01 1
9: Chain2 ABC 2007-01-01 4
10: Chain2 ABC 2008-01-01 3
11: Chain2 ABC 2009-01-01 2
12: Chain2 ABC 2010-01-01 0
13: Chain2 DEF 2007-01-01 3
14: Chain2 DEF 2008-01-01 3
15: Chain2 DEF 2009-01-01 3
16: Chain2 DEF 2010-01-01 2
这可能最好通过第一次合并来解决。我认为比较这两个数据集中的日期会有点棘手,尽管可能,但它们有共同的列。两个表格是否总是有相同的行?请使用dput(摘要表格)
或dput(摘要表格)