Import Data

df <- read.csv("data jantung.csv", sep = ";")
head(df)
##   Usia Jenis.Kelamin Denyut.Jantung Tekanan.Darah.Sistolik
## 1   64     Laki-laki             66                    160
## 2   21     Laki-laki             94                     98
## 3   55     Laki-laki             64                    160
## 4   64     Laki-laki             70                    120
## 5   55     Laki-laki             64                    112
## 6   58     Perempuan             61                    112
##   Tekanan.Darah.Distolik Gula.Darah CK.MB Troponin   Hasil
## 1                     83        160  1.80    0.012 Negatif
## 2                     46        296  6.75    1.060 Positif
## 3                     77        270  1.99    0.003 Negatif
## 4                     55        270 13.87    0.122 Positif
## 5                     65        300  1.08    0.003 Negatif
## 6                     58         87  1.83    0.004 Negatif
colnames(df)
## [1] "Usia"                   "Jenis.Kelamin"          "Denyut.Jantung"        
## [4] "Tekanan.Darah.Sistolik" "Tekanan.Darah.Distolik" "Gula.Darah"            
## [7] "CK.MB"                  "Troponin"               "Hasil"
str(df)
## 'data.frame':    1178 obs. of  9 variables:
##  $ Usia                  : int  64 21 55 64 55 58 32 44 67 44 ...
##  $ Jenis.Kelamin         : chr  "Laki-laki" "Laki-laki" "Laki-laki" "Laki-laki" ...
##  $ Denyut.Jantung        : int  66 94 64 70 64 61 40 60 61 60 ...
##  $ Tekanan.Darah.Sistolik: int  160 98 160 120 112 112 179 154 160 166 ...
##  $ Tekanan.Darah.Distolik: int  83 46 77 55 65 58 68 81 95 90 ...
##  $ Gula.Darah            : num  160 296 270 270 300 87 102 135 100 102 ...
##  $ CK.MB                 : num  1.8 6.75 1.99 13.87 1.08 ...
##  $ Troponin              : num  0.012 1.06 0.003 0.122 0.003 0.004 0.003 0.004 0.011 0.006 ...
##  $ Hasil                 : chr  "Negatif" "Positif" "Negatif" "Positif" ...
summary(df)
##       Usia        Jenis.Kelamin      Denyut.Jantung   Tekanan.Darah.Sistolik
##  Min.   : 14.00   Length:1178        Min.   : 20.00   Min.   : 42           
##  1st Qu.: 47.00   Class :character   1st Qu.: 64.00   1st Qu.:110           
##  Median : 57.00   Mode  :character   Median : 74.00   Median :124           
##  Mean   : 56.08                      Mean   : 75.91   Mean   :127           
##  3rd Qu.: 65.00                      3rd Qu.: 85.00   3rd Qu.:144           
##  Max.   :103.00                      Max.   :135.00   Max.   :223           
##  Tekanan.Darah.Distolik   Gula.Darah        CK.MB           Troponin      
##  Min.   : 38.00         Min.   : 35.0   Min.   : 0.321   Min.   :0.00200  
##  1st Qu.: 62.00         1st Qu.: 97.0   1st Qu.: 1.643   1st Qu.:0.00600  
##  Median : 72.00         Median :113.5   Median : 2.840   Median :0.01400  
##  Mean   : 72.38         Mean   :132.6   Mean   : 7.476   Mean   :0.23380  
##  3rd Qu.: 81.00         3rd Qu.:155.0   3rd Qu.: 5.330   3rd Qu.:0.07475  
##  Max.   :154.00         Max.   :300.0   Max.   :99.620   Max.   :4.25000  
##     Hasil          
##  Length:1178       
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
plot(
  df$Usia,
  df$Tekanan.Darah.Sistolik,
  pch = 19,
  col = "blue",
  xlab = "Usia",
  ylab = "Tekanan Darah Sistolik",
  main = "Scatter Plot Usia vs Tekanan Darah Sistolik"
)

barplot(table(df$Hasil),
        col = c("blue", "red"),
        main = "Distribusi Hasil Pemeriksaan",
        names.arg = c("Negatif", "Positif"),
        ylab = "Jumlah")

num_data <- df[, c("Usia", 
                   "Denyut.Jantung", 
                   "Tekanan.Darah.Sistolik",
                   "Tekanan.Darah.Distolik",
                   "Gula.Darah",
                   "CK.MB",
                   "Troponin")]

heatmap(cor(num_data, use = "complete.obs"),
        main = "Heatmap Korelasi Variabel",
        Colv = NA, Rowv = NA)

boxplot(Usia ~ Hasil,
        data = df,
        col = c("lightblue", "red"),
        main = "Perbandingan Usia Berdasarkan Hasil Pemeriksaan",
        xlab = "Hasil (0 = Negatif, 1 = Positif)",
        ylab = "Usia")

avg_usia <- tapply(df$Usia, df$Hasil, mean)

plot(avg_usia,
     type = "o",
     col = "red",
     xaxt = "n",
     xlab = "Hasil Pemeriksaan",
     ylab = "Rata-Rata Usia",
     main = "Rata-Rata Usia Berdasarkan Hasil")

axis(1, at = 1:2, labels = c("Negatif", "Positif"))