【发布时间】:2016-12-12 12:44:07
【问题描述】:
我目前正在尝试找出公司中有多少人在过去一年中连续 5 天休假 3 天。
下面列出了以下虚假数据作为示例:
structure(list(Region = c("20SUSSX", "20SUSSX", "20SUSSX", "20SUSSX",
"20SUSSX", "20SUSSX", "20SUSSX", "20SUSSX", "20SUSSX", "20SUSSX",
"20SUSSX", "20SUSSX", "20SUSSX", "20SUSSX", "20SUSSX", "20SUSSX",
"20SUSSX", "20SUSSX", "20SUSSX", "20SUSSX"), On_date = structure(c(16122,
16123, 16127, 16128, 16129, 16130, 16132, 16133, 16134, 16135,
16279, 16280, 16281, 16282, 16286, 16287, 16290, 16291, 16444,
16458), class = "Date"), Name = c("bob", "bob", "bob", "bob",
"bob", "bob", "bob", "bob", "bob", "bob", "bob", "bob", "bob",
"bob", "bob", "bob", "bob", "bob", "bob", "bob"), Sickness_Type = c("?",
"?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
"?", "?", "?", "?", "?", "?")), .Names = c("Region", "On_date",
"Name", "Sickness_Type"), row.names = c(NA, -20L), class = c("tbl_df",
"tbl", "data.frame"))
使用此数据框,我的目标是在“Sickness_Type”变量中使用 if else 语句,如果前 5 天中有 3 天出现疾病,则输入 1,如果发生频率低于此值,则输入 0 .一行仅出现在生病的员工身上。
由于我不熟悉 R 中的日期格式,我不确定如何执行此操作。目前我一直在尝试使用 dplyr 的 mutate 和 if_else 但没有运气。
对此的任何帮助将不胜感激,
谢谢!
【问题讨论】:
-
疾病如何识别?
-
“前 5 天”是指连续天数?即 21/02、22/02、26/02 考虑 3 天还是 6 天?
-
不确定我是否得到它。你能提供所需的输出吗?我的第一个猜测是这样的:
seq_along(df$On_date)-findInterval(df$On_date-5.1,df$On_date)>=3 -
@George 指出一个应该归类为疾病的实例以及不属于疾病的实例对您很有帮助。
-
但它没有考虑日历日期...只是出现在数据框上的日期
标签: r if-statement dplyr