我在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}}
请帮助!!!!!!
答案 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]]))
})