我有一个项目数据框
dummy <- data.frame("lead" = c("Sammy", "Dan", "Lawrence", "Sammy", "Dan", "Lawrence", "Lawrence", "Sammy"),
"project" = c("project4", "project2", "project3", "project4", "project1",
"project2", "project1", "project3"),
"member" = c("John", "Allen", "Jacob", "Bob", "John",
"John", "Allen", "Jacob"),
"hours" = c(25, 30, 15, 20, 15, 34, 24, 35))
将得到以下结果:
lead project member hours
1 Sammy project4 John 25
2 Dan project2 Allen 30
3 Lawrence project3 Jacob 15
4 Sammy project4 Bob 20
5 Dan project1 John 15
6 Lawrence project2 John 34
7 Lawrence project1 Allen 24
8 Sammy project3 Jacob 35
然后我将这个数据帧拆分为lead
和member
:
grouping <- dummy$lead
split_dum1 <- split(dummy, grouping)
grouping2 <- dummy$member
split_dum2 <- split(dummy, grouping2)
目标是这样:
我已经知道了这部分。
for (i in 1:length(split_dum1)) {
df_html <- print(xtable(split_dum1[[i]]), type = "html", print.results=FALSE,
include.rownames = FALSE
下一个目标:
member
列的第一项。split_dum2
中提取数据框,该数据框总结了该成员正在参与的所有项目。member
的此数据框放入一个表中,该表可以与上一项放置在同一电子邮件中。我也已经弄清楚了。目标两个部分的整个循环。
for (i in 1:length(split_dum1)) {
df_html <- print(xtable(split_dum1[[i]]), type = "html", print.results=FALSE,
include.rownames = FALSE)
employee_df <- list()
for (j in 1:nrow(split_dum1[[i]])) {
employee <- split_dum1[[i]]$Employee[j]
employee_df <- ra_user20[ra_user20$Employee == employee,]
df_html2[j] <- print(xtable(employee_df), type = "html", print.results=FALSE,
include.rownames = FALSE)
}
body <- paste0("<html>", df_html, "</html>")
body3 <- paste0("<html>", df_html2, "</html>")
body2 <- paste0("<p>", "Please see the table below for your assigned
project hours next week.", "</p>", body, body3)
OutApp <- COMCreate("Outlook.Application")
outMail = OutApp$CreateItem(0)
outMail[["To"]] = "[email protected]"
outMail[["subject"]] = paste0("Assigned Hours Over the Next 4 weeks")
outMail[["HTMLbody"]] = body2
## send it
outMail$Send()
}
上面的代码打印出2个表格并发送多封电子邮件。我需要每个项目负责人发送一封电子邮件。
这里的主要目标是向项目负责人发送表格,告知他们的项目以及谁被分配(这项工作)。第二部分是发送表格,以显示团队中的成员是否也被预订其他项目,以及这些项目是什么。
在电子邮件正文中看起来像这样:
lead project member hours
1 Sammy project4 John 25
2 Sammy project4 Bob 20
lead project member hours
1 Sammy project4 John 25
2 Dan project1 John 15
3 Lawrence project2 John 35
lead project member hours
1 Sammy project4 Bob 20
同样,这些都应该出现在一封电子邮件中。
Sammy想知道除了他的项目以外,他的团队的工作时间分配在哪里。
尽管确切的询问对我来说还不是很清楚,但我认为这就是您想要的。将此插入第一个for循环。显然,您不需要print(df_html2)
,但您应该知道如何处理输出以进入电子邮件。
df_html2 <- character(nrow(split_dum1[[i]]))
for(j in 1:nrow(split_dum1[[i]])){
employee <- split_dum1[[i]]$member[j]
employee_df <- dummy[dummy$member == employee,]
df_html2[j] <- print(xtable(employee_df), type = "html", print.results=FALSE,
include.rownames = FALSE)
}
print(df_html2)
并处理body3
的可变长度,请尝试:
body2 <- paste0("<p>", "Please see the table below for your assigned
project hours next week.", "</p>", body, paste(body3,collapse =" "))