所以我有两个数据帧 -
person.data
person_id | date | present_absent
1 12/9 p
2 12/9 a
3 12/9 p
1 20/9 a
2 20/9 a
3 20/9 a
...
daily.data
date | week_code | absence_count
12/9 A
20/9 B
...
我需要在daily.data框架中为每个日期计算出多少' a'代码记录在person.data框架中,并将结果记录在daily.data框架的absence_count列中。
问题的一部分是我不知道如何正确地说出问题而不举一个例子。我最近4个小时的google和stackoverflow搜索向我展示了如何计算' a'使用以下代码表示特定日期:
sum(person.data$date == 12/9 & person.data$present_absent == "a")
但是我无法弄清楚如何将person.data $ date与每个daily.data $ date进行比较。我可以依靠Excel并使用COUNTIFS()公式,但我真的想了解R.
提前感谢任何帮助都会受到极大的欢迎。
答案 0 :(得分:2)
您可以在R。
中使用聚合和%in%函数# Your first dataset
person.data <- data.frame("persion_id" = c(1,2,3,1,2,3),
"date" = c("12/9", "12/9", "12/9","20/9", "20/9", "20/9"),
"present_absent" = c("p", "a", "p", "a", "a", "a"))
# Your second dataset you want to populate
daily.data <- data.frame("date" = c("12/9", "20/9"),
"week_code" = c("A", "B"))
# Summarize the attendance for all dates
summary <- aggregate(as.integer(person.data$present_absent),
by = list(person.data$date, person.data$present_absent), FUN = sum)
# Get only the absent records from summary
daily.data$absence_count <- summary[(daily.data$date %in% person.data$date &
summary[,2] == "a"), 3]
答案 1 :(得分:0)
(into {}
(for [[k v] eval-result]
[(keyword k) v]))
解决方案:
dplyr