根据来自另一个数据帧的日期标准,从数据框中子集n行数

时间:2016-11-22 22:26:13

标签: r

我在R:

中有一个数据框(比如摘要)
Student_Hire_Date | Student_ID
2/1/2014 | 100001
2/2/2014 | 100002
2/3/2014 | 100003
2/4/2014 | 100004
2/5/2014 | 100005

另一个数据框(比如术语)

Summary$Count <- "select count(*) from Terms,Summary 
                  where Terms.Student_Hire_Date between
                      Summary.BeginDate and Summary.EndDate"
                  GROUP BY Summary.EndDate

我需要一个R代​​码,通过从条款表中获取Student_Hire_Date在&#39; BeginDate&#39;之间的数据子集来填充列&#34; Count&#34;和&#39; EndDate&#39;摘要表。

R代码相当于:

summary$Count <- nrow(subset(Terms, 
                              !is.na(Student_ID)
                               & Student_Hire_Date >= as.Date(Summary$BeginDate)
                                & Student_Hire_Date <= as.Date(Summary$EndDate)

我尝试使用以下代码,但每个日期范围的计数都相同。

{{1}}

请帮助!!!!!!

1 个答案:

答案 0 :(得分:0)

考虑sapply遍历每一行,将摘要行值与 Terms 行值进行比较。现在,您为摘要的每一行分配相同的条件,因为 BeginDate EndDate 与分配的新列的外部行不匹配。< / p>

Summary$Count <- sapply(seq_len(nrow(Summary)), function(i) {
       nrow(subset(Terms, !is.na(Student_ID)
                   & Student_Hire_Date >= Summary$BeginDate[[i]]
                   & Student_Hire_Date <= Summary$EndDate[[i]]))
})