我有一个项目数据帧
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)
目标是:
- 抓取列表中的第一个数据帧
- 将其放入可以嵌入到Outlook中并作为电子邮件发送的html表中
我已经想通了这部分。
for (i in 1:length(split_dum1)) {
df_html <- print(xtable(split_dum1[[i]]), type = "html", print.results=FALSE,
include.rownames = FALSE
下一个目标:
- 获取split_dum1中的第一个数据帧,然后拉取
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"]] = "ibell@cicerogroup.com"
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 =" "))