R เป็นโปรแกรมคอมพิวเตอร์ที่มีความสามารถสูงในการวิเคราะห์ข้อมูลเชิงสถิติ ในปัจจุบันเป็นที่นิยมในหลายสาขาวิชา เนื่องจากเป็น Open source ที่ทุกคนสามารถนำมาใช้งานโดยไม่มีค่าสใช้จ่ายและไม่ต้อกังวลเรื่องการละเมิดลิขสิทธ์เหมือนโปรแกรมสำเร็จรูปทางสถิติอื่น ๆ
ใช้เครื่องหมายคณิตศาสตร์ +, -, *, / ในการบวก, ลบ, คูณ และหาร และใช้ ^ เป็นเครื่องหมายในการยกกำลัง ตัวอย่างเช่น
1+1
## [1] 2
10-5
## [1] 5
5*2
## [1] 10
100/10
## [1] 10
5^2
## [1] 25
x=2
x+3
## [1] 5
x^3
## [1] 8
ข้อมูลในโปรแกรม R แบ่งเป็น 3 ประเภท ได้แก่
Numeric เป็นข้อมูลที่มีค่าเป็นตัวเลข หรือในทางสถิติเรียกข้อมูลชนิดนี้ว่าข้อมูลเชิงปริมาณ (Quantitative data) เช่น อายุ รายได้ และคะแนนสอบ เป็นต้น ซึ่งข้อมูลชนิดนี้สามารถนํามาคำนวณหาค่าทางสถิติต่าง ๆ เช่น ค่าเฉลี่ย ค่าเบี่ยงเบนมาตรฐาน
age<- c(5,10,15,20)
mean(age)
## [1] 12.5
sd(age)
## [1] 6.454972
Character เป็นข้อมูลที่ค่าของมันไม่ใช่ตัวเลข โดยปรกติมักเป็นข้อความ หรือตัวอักษร ในทางสถิติเรียกข้อมูล ชนิดนี้ว่าข้อมูลเชิงคุณภาพ (Qualitative data) เช่น เพศ (ชาย, หญิง) ระดับการศึกษา (มัธยมศึกษา, ปริญญาตรี, ปริญญาโท) เป็นต้น ข้อมูลชนิดนี้ไม่สามารถนํามาคำนวณเพื่อหาค่าทางสถิติได้ แต่มีวิธีเชิง สถิติบางวิธีที่สามารถใช้ในการวิเคราะห์เพื่อหาคำตอบที่ผู้วิจัยต้องการจากข้อมูลชนิดนี้ได้ ซึ่งโดยทั่วไป จะใช้วิธีกลุ่มของสถิติไม่อิงพารามิเตอร์ (Nonparametric statistics)
sex<- c("boy","girl","girl","boy")
table(sex)
## sex
## boy girl
## 2 2
Logical เป็นข้อมูลเชิงตรรกที่มีค่าอยู่สองค่าเท่านั้น คือ TRUE แทนค่าจริง และ FALSE แทนค่าที่เป็นเท็จ
x = 10
x>12
## [1] FALSE
x<100
## [1] TRUE
Download ตัวอย่างข้อมูล
iris เป็นตัวอย่างข้อมูลประกอบด้วยผลการวัดความยาว (Length) และความกว้าง(Width) ของกลีบเลี้ยง (sepal) และกลีบดอก (petal) จากดอกไม้ทั้งหมด 150 ดอก จาก 3 สายพันธุ์ (species)
data("iris")
แสดง 6 แถวแรกของข้อมูล
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
เรียกดูการสรุปข้อมูลโดยใช้ summary()
สำหรับข้อมูลที่เป็นตัวเลข เราสามารถใช้คำสั่งต่อไปนี้เพื่อเรียกดูข้อมูล - Min: ค่าน้อยสุด - Median: ค่ามัธยฐาน - Mean: ค่าเฉลี่ย - Max: ค่ามากสุด
สำหรับข้อมูลที่เป็นตัวแปรจัดกลุ่ม (categorical variable) เราใช้การนับจำนวน setosa: มีข้อมูล 50 แถว versicolor: มีข้อมูล 50 แถว virginica: มีข้อมูล 50 แถว
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
เรียกดูจำนวนแถว (row) และคอลัมม์ (column)
dim(iris)
## [1] 150 5
ใช้ hist() ในการสร้างแผนภูมิ Histrogram
hist(iris$Sepal.Length,
col='steelblue',
main='Histogram',
xlab='Length',
ylab='Frequency')
ใช้ plot() ในการสร้าง scatterplot ของการจับคู่ตัวแปรที่เป็น ตัวเลข (numerical variable)
plot(iris$Sepal.Width, iris$Sepal.Length,
col='steelblue',
main='Scatterplot',
xlab='Sepal Width',
ylab='Sepal Length',
pch=19)
ใช้ boxplot() สร้าง boxplot จำแนกตามกลุ่ม
boxplot(Sepal.Length~Species,
data=iris,
main='Sepal Length by Species',
xlab='Species',
ylab='Sepal Length',
col='steelblue',
border='black')
Set working directory ใช้สำหรับกำหนดไฟล์ที่เราจะทำงานและบันทึกผลการวิเคราะห์ต่าง ๆ
Session–> Set working directory–> Choose Directory –> เลือกไฟล์งานของเรา
setwd(“/Volumes/KEERATI SSD/Keerati/SCPH/Computer_for_Public_Health/2022/Data”)
getwd() #เรียกดู Working Directory
## [1] "/Users/keeratiponpetch/Desktop/Keerati/สอน R"
library(readr)
Dataset <- read_csv("Data/Dataset.csv")
## Rows: 403 Columns: 17
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): location, gender, frame
## dbl (14): id, chol, stab.glu, hdl, ratio, glyhb, age, height, weight, bp.1s,...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(Dataset)
library(readr)
Dataset <- read_csv("Data/Dataset.csv")
## Rows: 403 Columns: 17
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): location, gender, frame
## dbl (14): id, chol, stab.glu, hdl, ratio, glyhb, age, height, weight, bp.1s,...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(Dataset)
## # A tibble: 6 × 17
## id chol stab.glu hdl ratio glyhb location age gender height weight
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <chr> <dbl> <dbl>
## 1 1000 203 82 56 3.60 4.31 Buckingham 46 female 62 121
## 2 1001 165 97 24 6.90 4.44 Buckingham 29 female 64 218
## 3 1002 228 92 37 6.20 4.64 Buckingham 58 female 61 256
## 4 1003 78 93 12 6.5 4.63 Buckingham 67 male 67 119
## 5 1005 249 90 28 8.90 7.72 Buckingham 64 male 68 183
## 6 1008 248 94 69 3.60 4.81 Buckingham 34 male 71 190
## # … with 6 more variables: frame <chr>, bp.1s <dbl>, bp.1d <dbl>, waist <dbl>,
## # hip <dbl>, time.ppn <dbl>
summary(Dataset)
## id chol stab.glu hdl
## Min. : 1000 Min. : 78.0 Min. : 48.0 Min. : 12.00
## 1st Qu.: 4792 1st Qu.:179.0 1st Qu.: 81.0 1st Qu.: 38.00
## Median :15766 Median :204.0 Median : 89.0 Median : 46.00
## Mean :15978 Mean :207.8 Mean :106.7 Mean : 50.45
## 3rd Qu.:20336 3rd Qu.:230.0 3rd Qu.:106.0 3rd Qu.: 59.00
## Max. :41756 Max. :443.0 Max. :385.0 Max. :120.00
## NA's :1 NA's :1
## ratio glyhb location age
## Min. : 1.500 Min. : 2.68 Length:403 Min. :19.00
## 1st Qu.: 3.200 1st Qu.: 4.38 Class :character 1st Qu.:34.00
## Median : 4.200 Median : 4.84 Mode :character Median :45.00
## Mean : 4.522 Mean : 5.59 Mean :46.85
## 3rd Qu.: 5.400 3rd Qu.: 5.60 3rd Qu.:60.00
## Max. :19.300 Max. :16.11 Max. :92.00
## NA's :1 NA's :13
## gender height weight frame
## Length:403 Min. :52.00 Min. : 99.0 Length:403
## Class :character 1st Qu.:63.00 1st Qu.:151.0 Class :character
## Mode :character Median :66.00 Median :172.5 Mode :character
## Mean :66.02 Mean :177.6
## 3rd Qu.:69.00 3rd Qu.:200.0
## Max. :76.00 Max. :325.0
## NA's :5 NA's :1
## bp.1s bp.1d waist hip
## Min. : 90.0 Min. : 48.00 Min. :26.0 Min. :30.00
## 1st Qu.:121.2 1st Qu.: 75.00 1st Qu.:33.0 1st Qu.:39.00
## Median :136.0 Median : 82.00 Median :37.0 Median :42.00
## Mean :136.9 Mean : 83.32 Mean :37.9 Mean :43.04
## 3rd Qu.:146.8 3rd Qu.: 90.00 3rd Qu.:41.0 3rd Qu.:46.00
## Max. :250.0 Max. :124.00 Max. :56.0 Max. :64.00
## NA's :5 NA's :5 NA's :2 NA's :2
## time.ppn
## Min. : 5.0
## 1st Qu.: 90.0
## Median : 240.0
## Mean : 341.2
## 3rd Qu.: 517.5
## Max. :1560.0
## NA's :3
Plot histogram of age
hist(Dataset$age,
main = "Age (Year)",
col = "blue",
xlab = "Age",
xlim = c(0,100))
เลือกเฉพาะคอลัมม์ Height และ Weight
data1<- Dataset[,10:11]
head(data1)
## # A tibble: 6 × 2
## height weight
## <dbl> <dbl>
## 1 62 121
## 2 64 218
## 3 61 256
## 4 67 119
## 5 68 183
## 6 71 190
Scatter plot of ม์ Height และ Weight
plot(data1$height,data1$weight)
plot(data1,
col = "red")