use*_*845 6 r html-table dataframe
我有一个下面提到的数据框:
DF(输出):
structure(list(ID = c("P-1", " P-1",
"P-1", "P-2", "P-3", "P-4",
"P-5", "P-6", "P-7", "P-8"
), Date = c("2020-03-16 12:11:33", "2020-03-16 13:16:04",
"2020-03-16 06:13:55", "2020-03-16 10:03:43", "2020-03-16 12:37:09",
"2020-03-16 06:40:24", "2020-03-16 09:46:45", "2020-03-16 12:07:44",
"2020-03-16 14:09:51", "2020-03-16 09:19:23"), Status = c("SA",
"SA", "SA", "RE", "RE", "RE",
"RE", "XA", "XA", "XA"), Flag2 = c("L",
"L","L", NA, "K", "J", NA, NA, "H", "G"), Value = c(5929.81,
5929.81, 5929.81, NA, 6969.33, 740.08, NA, NA, 1524.8, NA), Flag2 = c("CL",
"CL", "CL", NA, "RY", "", NA, NA, "", NA), Flag3 = c(NA, NA,
NA, NA, "RI", "PO", NA, "SS", "DDP", NA)), .Names = c("ID",
"Date", "Status", "Flag", "Value",
"Flag2", "Flag3"), row.names = c(NA, 10L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
我正在使用下面提到的代码:
df %>% mutate(L = ifelse(Flag == "L",1,0),
K = ifelse(Flag == "K",1,0),
# etc for Flag) %>%
mutate(sub_status = NA) %>%
mutate(sub_status = ifelse(!is.na(Flag2) & Flag3 == 0, "a", sub_status),
sub_status = ifelse(is.na(Flag2) & Flag3 != 0, "b", sub_status),
# etc for sub-status) %>%
mutate(value_class = ifelse(0 <= Value & Value <= 15000, "0-15000", "15000-50000")) %>%
group_by(Date, status, sub_status, value_class) %>%
summarise(L = sum(L),
K = sum(K),
# etc
count = n())
Run Code Online (Sandbox Code Playgroud)
这为我提供了以下输出:
Date Status sub_status value_class G H I J K L NA Count
2020-03-20 SA a 0-15000 0 0 0 0 1 1 0 2
2020-03-20 SA b 0-15000 0 0 0 0 1 0 0 1
................
................
Run Code Online (Sandbox Code Playgroud)
我想使用 获得以下输出DF,其中该Status列具有不同的 3 个值并且Flag2具有值或 [null] 或 NA,最后该Flag3列具有具有 [null] 或 NA 的不同 7 个值。对于一个不同ID的Flag3列,我们有多个条目。
我需要通过基于Value0-15000、15000-50000创建 3 个组来创建以下数据框。
Flag2具有除 0 或 [null]/NA 以外的某个值但Flag3具有值 0 或 [null]/NA,那么它将是a.Flag3具有除 0 或 [null]/NA 以外的某个值但Flag2具有值 0 或 [null]/NA 那么它将是bFlag2&Flag3都具有除 0 或 [Null]/NA 以外的某个值,那么它将是cFlag2& 的Flag3值都为 0 或 [Null]/NA,则它将是d计数将是一个不同的 group by ID。此外,对于第一行(Status即 SA、RE 等开始的地方),percentage将根据Total状态计数计算 sub_status(即 a、b、c 等)的百分比和以下百分比。
我想将上述 datafrmae 安排在以下结构中,percent并Total以 html 表格格式的列排列,可以使用 mailR 库将其附加到电子邮件中。
我正在使用代码:
library(tableHTML)
html_table<-df %>% tableHTML(rownames = FALSE,
widths = rep(120, 10),
caption = "XYZ (System Date)") %>%
add_css_caption(css = list(c("font-weight", "border","font-size"),
c("bold", "1px solid black","16px")))%>%
add_css_row(css = list(c("background-color"), c("lightblue")), rows = 0:1)%>%
add_css_caption(css = list(c("background-color"), c("lightblue")))
Run Code Online (Sandbox Code Playgroud)
20/03/2020 0 - 15000 15000 - 50000
Status count percent L K J H G [Null] count percent L K J H G [Null] Total
SA 2 2/4 1 1 0 0 0 1 2 0 0 1 1 0 0 4
a 1 1/2 0 1 0 0 0 0 0 0 0 0 0 0 0 1
b 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 1 1/2 1 0 0 0 0 0 2 0 0 1 1 0 0 3
d 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RE 2 2/5 0 0 0 0 1 1 0 0 0 0 0 0 0 2
a 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1
b 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
XA 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1
a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1
Total 5 1 1 0 0 1 3 2 0 0 1 1 0 0 7
Run Code Online (Sandbox Code Playgroud)
我已经提到了基于 20/03/2020 的最新日期所需的输出,如果数据帧没有最新日期startdate,则在输出数据帧中保留所有值 0。百分比列仅供参考,将计算百分比值。
另外,我想保持结构静态。例如,如果一天内没有任何参数存在,则输出结构将与 0 值相同。
例如,假设日期 17/03/2020 没有任何状态为 SA 或 sub_status c 的行,其占位符将出现在输出中,值为 0。
注意:所需的输出仅用于格式透视图。这些数字可能与dputdf不匹配。