У меня обработанный фрейм данных следующим образом (штатное расписание отличается для разных еженедельных отчетов):
df <- structure(list(Department = c("DP1", "DP1", "DP2", "DP2", "DP2",
"DP4"), `Staff Name` = c("Bray Laura", "Fognani Mikaela", "Despain Taylor",
"Housum Zachary", "Herman Trenton", "Burgette Lesley"), `Non-compliance Criteria` = c("0 temperature reporting for >/= 3 days",
"0 temperature reporting for 2 consecutive readings", "0 temperature reporting for 2 consecutive readings",
"0 temperature reporting for 2 consecutive readings", "0 temperature reporting for 2 consecutive readings",
"1 temperature reporting/day for >/= 5 days")), row.names = c(NA,
6L), class = "data.frame")
Есть 4 фиксированных значения в Department
:
DP1
DP2
DP3
DP4
И 3 фиксированных значения в Non-compliance Criteria
:
0 temperature reporting for >/= 3 days
0 temperature reporting for 2 consecutive readings
1 temperature reporting/day for >/= 5 days
Список Staff Name
будет отличаться для разных еженедельных отчетов.
Я хотел бы вывести тексты с уценкой R следующим образом:
I wi sh, чтобы получить доступ к значениям в кадре данных и записать их в виде текста и маркеров. Таким образом, в Department
мы покажем список сотрудников, которые не соответствуют требованиям, и каким критериям они соответствуют. Если в пределах Department
,> 1 сотрудник соответствует тем же критериям, мы свернем их с помощью «,» и «и», как показано в примере «DP2».
Я застрял после этого:
non_compliants <- df %>%
group_by(Department, `Non-compliance Criteria`) %>%
summarise(Text = paste(paste(`Staff Name`, collapse = " and "), "had", unique(`Non-compliance Criteria`))) %>%
ungroup()
lapply(c("DP1", "DP2", "DP3", "DP4"),
function(x){
ifelse(dim(filter(non_compliants, Department == x))[1] == 0,
"NA",
non_compliants$Text[non_compliants$Department == x])})