knitr::opts_chunk$set(echo = TRUE)
#library(xtable) library(magrittr) library(dlookr) library(dplyr) library(kableExtra)
edaData <- get("edaData", .dlookrEnv) N <- NROW(edaData) diagn_overview <- diagnose(edaData) names(diagn_overview) <- c("variables", "type", "missing value(n)", "missing value(%)", "unique value(n)", "unique value(n/N)") cap <- "개괄적 데이터 품질 진단 목록" knitr::kable(diagn_overview, digits = 2, caption = cap, format = "html", format.args = list(big.mark = ",")) %>% kable_styling(full_width = FALSE, font_size = 15, position = "left")
diagn_missing <- diagn_overview %>% filter(`missing value(n)` > 0) %>% arrange(desc(`missing value(n)`)) if (NROW(diagn_missing) > 0) { cap <- "결측치 포함 변수의 목록" knitr::kable(diagn_missing, digits = 2, caption = cap, format = "html", format.args = list(big.mark = ",")) %>% kable_styling(full_width = FALSE, font_size = 15, position = "left") } else { cat("\n\n결측치가 포함된 변수가 없습니다.\n\n") }
diagn_uniq_cat <- diagn_overview %>% filter(type %in% c("character", "factor", "ordered")) %>% filter(`unique value(n/N)` >= 0.5) %>% arrange(desc(`unique value(n/N)`)) if (NROW(diagn_uniq_cat) > 0) { cap <- "유일값의 비율이 0.5 이상인 변수 목록" knitr::kable(diagn_uniq_cat, digits = 2, caption = cap, format = "html", format.args = list(big.mark = ",")) %>% kable_styling(full_width = FALSE, font_size = 15, position = "left") } else { cat("유일값의 비율이 0.5보다 큰 변수가 없습니다.") }
diagn_uniq_num <- diagn_overview %>% filter(type %in% c("numeric", "integer")) %>% filter(`unique value(n/N)` <= 0.1) %>% arrange(`unique value(n/N)`) if (NROW(diagn_uniq_num) > 0) { cap <- "유일값의 비율이 0.1 이하인 변수 목록" knitr::kable(diagn_uniq_num, digits = 2, caption = cap, format = "html", format.args = list(big.mark = ",")) %>% kable_styling(full_width = FALSE, font_size = 15, position = "left") } else { cat("유일값의 비율이 0.1보다 작은 변수가 없습니다.") }
diagn_category <- diagnose_category(edaData, top = 10, type = "n") if (NROW(diagn_category) > 0) { names(diagn_category)[5] <- "ratio(%)" diagn_category <- diagn_category %>% filter(rank <= 50) cap <- "범주형 변수의 상위 10 수준(levels) 목록" knitr::kable(diagn_category, digits = 2, caption = cap, format = "html", format.args = list(big.mark = ",")) %>% kable_styling(full_width = FALSE, font_size = 15, position = "left") } else { cat("범주형 변수가 없습니다.") }
diagn_numeric <- diagnose_numeric(edaData) if (NROW(diagn_numeric) > 0) { cap <- "수치형 변수의 진단 목록" knitr::kable(diagn_numeric, digits = 2, caption = cap, format = "html", format.args = list(big.mark = ",")) %>% kable_styling(full_width = FALSE, font_size = 15, position = "left") } else { cat("수치형 변수가 없습니다.") }
if (NROW(diagn_numeric) > 0) { diagn_zero <- diagn_numeric %>% filter(zero > 0) %>% select(variables, min, median, max, zero) %>% mutate(`zero ratio(%)` = zero / N * 100) %>% arrange(desc(zero)) if (NROW(diagn_zero) > 0) { cap <- "수치형 변수의 진단 (zero) 목록" knitr::kable(diagn_zero, digits = 2, caption = cap, format = "html", format.args = list(big.mark = ",")) %>% kable_styling(full_width = FALSE, font_size = 15, position = "left") } else { cat("0을 포함한 수치형 변수가 없습니다.") } } else { cat("수치형 변수가 없습니다.") }
if (NROW(diagn_numeric) > 0) { diagn_minus <- diagn_numeric %>% filter(minus > 0) %>% select(variables, min, median, max, minus) %>% mutate(`minus ratio(%)` = minus / N * 100) %>% arrange(desc(minus)) if (NROW(diagn_minus) > 0) { cap <- "수치형 변수의 진단 (음수) 목록" knitr::kable(diagn_minus, digits = 2, caption = cap, format = "html", format.args = list(big.mark = ",")) %>% kable_styling(full_width = FALSE, font_size = 15, position = "left") } else { cat("음수를 포함한 수치형 변수가 없습니다.") } } else { cat("수치형 변수가 없습니다.") }
if (NROW(diagn_numeric) > 0) { diagn_outlier <- diagn_numeric %>% filter(outlier > 0) %>% select(variables, min, median, max, outlier) %>% mutate(`outlier ratio(%)` = outlier / N * 100) %>% arrange(desc(outlier)) if (NROW(diagn_outlier) > 0) { cap <- "수치형 변수의 이상치 목록" knitr::kable(diagn_outlier, digits = 2, caption = cap, format = "html", format.args = list(big.mark = ",")) %>% kable_styling(full_width = FALSE, font_size = 15, position = "left") } else { cat("이상치를 포함한 수치형 변수가 없습니다.") } } else { cat("수치형 변수가 없습니다.") }
if (NROW(diagn_numeric) > 0) { diagn_outlier2 <- edaData %>% diagnose_outlier(diagn_outlier$variables) cols <- c("이상치 개수", "이상치 백분율 (%)", "이상치 산술평균", "이상치를 포함 산술평균", "이상치 제외 산술평균") if (NROW(diagn_outlier2) > 0) { variables <- diagn_outlier2 %>% select(variables) %>% unlist for (i in seq(variables)) { cap <- sprintf("%s", variables[i]) cat(sprintf("variable : %s", cap)) cap_table <- paste0(cap, "의 이상치 정보") outlier_df <- data.frame(Measures = cols, Values = as.vector(t(diagn_outlier2[i, -1]))) knitr::kable(outlier_df, digits = 2, caption = cap_table, format = "html") %>% kable_styling(full_width = FALSE, font_size = 15, position = "left") %>% print() plot_outlier(edaData, variables[i]) cat("<br><hr>\n\n<br>") } } else { cat("이상치를 포함한 수치형 변수가 없습니다.") } } else { cat("수치형 변수가 없습니다.") }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.