1 Tuần 3

1.1 pivot_longer

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.2.3
## Warning: package 'ggplot2' was built under R version 4.2.3
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'tidyr' was built under R version 4.2.3
## Warning: package 'readr' was built under R version 4.2.3
## Warning: package 'purrr' was built under R version 4.2.3
## Warning: package 'dplyr' was built under R version 4.2.3
## Warning: package 'stringr' was built under R version 4.2.3
## Warning: package 'forcats' was built under R version 4.2.3
## Warning: package 'lubridate' was built under R version 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
  • bảng tổng hợp dạng long về trung bình lượng ozone trong ngày
airquality_long <- pivot_longer(airquality, cols = -c(Month, Day), names_to = "Variable", values_to = "Value")
ozone_avgD <- airquality_long %>%
  filter(Variable == "Ozone") %>%  
  group_by(Day) %>%
  summarize(Average_Ozone = mean(Value, na.rm = TRUE))
print(ozone_avgD)
## # A tibble: 31 × 2
##      Day Average_Ozone
##    <int>         <dbl>
##  1     1          77.8
##  2     2          43  
##  3     3          33.2
##  4     4          62.3
##  5     5          48.7
##  6     6          41.5
##  7     7          54.2
##  8     8          57  
##  9     9          61.4
## 10    10          49.3
## # ℹ 21 more rows

1.2 pivot_wider

giống như với long ta tạo ra bảng dạng wide cũng tương tự nhưng dùng lệnh pivot_wider

library(tidyr)

wider_ozoneMontth <- airquality %>%
  group_by(Month) %>%
  summarise(mean_Ozone = mean(Ozone, na.rm = TRUE)) %>%
  pivot_wider(names_from = "Month", values_from = "mean_Ozone")
print(wider_ozoneMontth)
## # A tibble: 1 × 5
##     `5`   `6`   `7`   `8`   `9`
##   <dbl> <dbl> <dbl> <dbl> <dbl>
## 1  23.6  29.4  59.1  60.0  31.4

2 Tuần 2

2.1 Tính các dữ liệu theo tiêu chí thống kê

2.1.1 tính trung bình

  • trung bình của số nhiệt độ
mean(airquality$T)
## [1] 77.88235
  • Tính phương sai
var(airquality$T)
## [1] 89.59133
  • Độ lệch chuẩn
sd(airquality$T)
## [1] 9.46527

2.1.2 tính tứ phân vị

q1 <- quantile(airquality$T, prob=0.25)
trungvi <- quantile(airquality$T, prob = 0.5)
q3 <- quantile(airquality$T, prob = 0.75)
  • Kết quả của tứ phân vị
print(q1)
## 25% 
##  72
print(trungvi)
## 50% 
##  79
print(q3)
## 75% 
##  85

2.2 Tóm tắt các thống kê của datashet “airquality”

summary(airquality)
##      Ozone           Solar.R           Wind             Temp      
##  Min.   :  1.00   Min.   :  7.0   Min.   : 1.700   Min.   :56.00  
##  1st Qu.: 18.00   1st Qu.:115.8   1st Qu.: 7.400   1st Qu.:72.00  
##  Median : 31.50   Median :205.0   Median : 9.700   Median :79.00  
##  Mean   : 42.13   Mean   :185.9   Mean   : 9.958   Mean   :77.88  
##  3rd Qu.: 63.25   3rd Qu.:258.8   3rd Qu.:11.500   3rd Qu.:85.00  
##  Max.   :168.00   Max.   :334.0   Max.   :20.700   Max.   :97.00  
##  NA's   :37       NA's   :7                                       
##      Month            Day      
##  Min.   :5.000   Min.   : 1.0  
##  1st Qu.:6.000   1st Qu.: 8.0  
##  Median :7.000   Median :16.0  
##  Mean   :6.993   Mean   :15.8  
##  3rd Qu.:8.000   3rd Qu.:23.0  
##  Max.   :9.000   Max.   :31.0  
## 

3 TUẦN 1

3.1 Giới thiệu về datashet “airquality”

Mô tả: Đo chất lượng không khí hàng ngày ở New York, tháng 5 đến tháng 9 năm 1973. Một khung dữ liệu với 153 quan sát trên 6 biến. ## Ý nghĩa các biến có trong dữ liệu - Ozone: Nồng độ Ozone tích lũy (ppb) - Solar.R: Tổng lượng bức xạ mặt trời trong đơn vị langley (lang) - Wind: Tốc độ Gió (mph) - Temp: Nhiệt độ (độ F) - Month: số Tháng (1-12) - Day: số Ngày trong tháng (1-31) Dữ liệu được lấy từ Cục Bảo an Bang New York (dữ liệu ozone) và Dịch vụ Thời tiết Quốc gia (dữ liệu khí tượng). ## Lấy dữ liệu của datashet airquality

data("airquality")

3.2 Gán dữ liệu

d <- airquality

3.3 mô tả chi tiết kiểu biến số của datashet airquality

str(d)
## 'data.frame':    153 obs. of  6 variables:
##  $ Ozone  : int  41 36 12 18 NA 28 23 19 8 NA ...
##  $ Solar.R: int  190 118 149 313 NA NA 299 99 19 194 ...
##  $ Wind   : num  7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
##  $ Temp   : int  67 72 74 62 56 66 65 59 61 69 ...
##  $ Month  : int  5 5 5 5 5 5 5 5 5 5 ...
##  $ Day    : int  1 2 3 4 5 6 7 8 9 10 ...

3.4 Các câu lệnh xuất hiện dữ liệu đầu và cuối

3.4.1 hiện 6 dòng đầu tiên của dữ liệu (câu lệnh head)

head(d)
##   Ozone Solar.R Wind Temp Month Day
## 1    41     190  7.4   67     5   1
## 2    36     118  8.0   72     5   2
## 3    12     149 12.6   74     5   3
## 4    18     313 11.5   62     5   4
## 5    NA      NA 14.3   56     5   5
## 6    28      NA 14.9   66     5   6

3.4.2 hiện 6 dòng cuối của dữ liệu (câu lệnh tail)

tail(d)
##     Ozone Solar.R Wind Temp Month Day
## 148    14      20 16.6   63     9  25
## 149    30     193  6.9   70     9  26
## 150    NA     145 13.2   77     9  27
## 151    14     191 14.3   75     9  28
## 152    18     131  8.0   76     9  29
## 153    20     223 11.5   68     9  30

3.5 gán tên viết tắt cho các biến để dễ thao tác

names(d) <- c('O','S','W','T','M','D')

3.6 lấy dữ liệu của biến T

Temp <- d$T
#nhiệt độ lớn hơn 80 độ F
Temp <- Temp[Temp>80]
#Nhiệt độ lớn hơn 70 và nhỏ hơn 90 (độ F)
Temp7090 <- Temp[Temp>70&Temp<90]

3.7 Phân tổ

Phân tổ Temp thành 4 tổ

table(cut(Temp,4))
## 
## (81,85] (85,89] (89,93] (93,97] 
##      34      17      13       4

3.8 Lấy dữ liệu từ vị trí xác định

lấy dữ liệu từ vị trí dòng 2 cột 5

d[2,5]
## [1] 5

3.9 Vẽ biểu đồ trong R

biểu đồ cho số gió (W)

barplot(table(d$W),xlab="Wind",ylab="Frequency")