library(data.table)
## Warning: package 'data.table' was built under R version 4.5.3
data <- fread("data_balita.csv")

names(data) <- c("Umur", "Jenis_Kelamin", "Tinggi_Badan", "Status_Gizi")

data
##          Umur Jenis_Kelamin Tinggi_Badan      Status_Gizi
##         <int>        <char>        <num>           <char>
##      1:     0     laki-laki     44.59197          stunted
##      2:     0     laki-laki     56.70520           tinggi
##      3:     0     laki-laki     46.86336           normal
##      4:     0     laki-laki     47.50803           normal
##      5:     0     laki-laki     42.74349 severely stunted
##     ---                                                  
## 120995:    60     perempuan    100.60000           normal
## 120996:    60     perempuan     98.30000          stunted
## 120997:    60     perempuan    121.30000           normal
## 120998:    60     perempuan    112.20000           normal
## 120999:    60     perempuan    109.80000           normal
tabel_jenis_kelamin <- data[, .(Frekuensi = .N), by = Jenis_Kelamin]
tabel_jenis_kelamin[, Persentase := round(Frekuensi / sum(Frekuensi) * 100, 2)]

print(tabel_jenis_kelamin)
##    Jenis_Kelamin Frekuensi Persentase
##           <char>     <int>      <num>
## 1:     laki-laki     59997      49.58
## 2:     perempuan     61002      50.42
tabel_status_gizi <- data[, .(Frekuensi = .N), by = Status_Gizi]
tabel_status_gizi[, Persentase := round(Frekuensi / sum(Frekuensi) * 100, 2)]

print(tabel_status_gizi)
##         Status_Gizi Frekuensi Persentase
##              <char>     <int>      <num>
## 1:          stunted     13815      11.42
## 2:           tinggi     19560      16.17
## 3:           normal     67755      56.00
## 4: severely stunted     19869      16.42