R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

Including Plots

You can also embed plots, for example:

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.

df = read.csv2("D:\\TAM DAN NON-ORTHO\\11. Non Ortho_ORAL HEATHY SURVEY FORM\\11.2 PLAQUE INDEX (PlI)\\11.2 PLAQUE INDEX (PlI).csv")
library(lessR)
## Warning: package 'lessR' was built under R version 4.5.2
## 
## lessR 4.5                            feedback: gerbing@pdx.edu 
## --------------------------------------------------------------
## > d <- Read("")  Read data file, many formats available, e.g., Excel
##   d is the default data frame, data= in analysis routines optional
## 
## Many examples of reading, writing, and manipulating data, graphics,
## testing means and proportions, regression, factor analysis,
## customization, forecasting, and aggregation to pivot tables.
##   Enter: browseVignettes("lessR")
## 
## View lessR updates, now including modern time series forecasting
##   and many, new Plotly interactive visualizations output. Most
##   visualization functions are now reorganized to three functions:
##      Chart(): type="bar", "pie", "radar", "bubble", "treemap", "icicle"
##      X(): type="histogram", "density", "vbs" and more
##      XY(): type="scatter" for a scatterplot, or "contour", "smooth"
##    Most previous function calls still work, such as:
##      BarChart(), Histogram, and Plot().
##   Enter: news(package="lessR"), or ?Chart, ?X, or ?XY
## There is also Flows() for Sankey flow diagrams, see ?Flows
## 
## Interactive data analysis for constructing visualizations.
##   Enter: interact()
library(labelled)
## Warning: package 'labelled' was built under R version 4.5.3
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:lessR':
## 
##     order_by, recode, rename
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(writexl)
## Warning: package 'writexl' was built under R version 4.5.3
# 1. MÃ HÓA PLAQUE INDEX VÀ GHI ĐÈ LÊN BẢNG GỐC (df)
df <- df %>%
  mutate(
    # Loại trừ No, ID và áp dụng mã hóa cho tất cả các cột mặt răng còn lại
    across(
      -c(No, ID),
      ~ factor(., 
               levels = c(0, 1, 2, 3, 88, 99), 
               labels = c("Absence of microbial plaque", 
                          "Thin film of microbial plaque along the free gingival margin", 
                          "Moderate accumulation with plaque in the sulcus", 
                          "Large amount of plaque in sulcus or pocket along the free gingival margin", 
                          "Not recorded", 
                          "Missing tooth"))
    )
  )

# 2. GẮN NHÃN MÔ TẢ (LABELS) HOÀN TOÀN TỰ ĐỘNG
# Bước 2.1: Lấy danh sách tên tất cả các biến (trừ No và ID)
plaque_vars <- setdiff(names(df), c("No", "ID"))

# Bước 2.2: Tự động dịch các hậu tố viết tắt thành tên mặt răng đầy đủ
nhan_plaque <- plaque_vars %>%
  gsub("_Disto", " Distal Surface", .) %>%
  gsub("_Buc", " Buccal Surface", .) %>%
  gsub("_Mesio", " Mesial Surface", .) %>%
  gsub("_Lin", " Lingual Surface", .) %>%
  paste("Plaque Index Tooth", .) # Thêm cụm từ nhận diện vào phía trước

# Bước 2.3: Gán danh sách nhãn vừa tạo vào bảng df
names(nhan_plaque) <- plaque_vars
var_label(df) <- as.list(nhan_plaque)
# Tạo một bảng copy tạm thời để đổi tên tiêu đề
df_export <- df %>%
  # Lệnh này biến toàn bộ các "Nhãn dài" thành tên cột thực sự
  setNames(var_label(., unlist = TRUE))

# Sau đó xuất cái bảng tạm này ra Excel
write_xlsx(df_export, "D:\\TAM DAN - NON ORTHO (NEW)\\11.2\\11.2 PLAQUE INDEX (PlI).xlsx")