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
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
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
mean(airquality$T)
## [1] 77.88235
var(airquality$T)
## [1] 89.59133
sd(airquality$T)
## [1] 9.46527
q1 <- quantile(airquality$T, prob=0.25)
trungvi <- quantile(airquality$T, prob = 0.5)
q3 <- quantile(airquality$T, prob = 0.75)
print(q1)
## 25%
## 72
print(trungvi)
## 50%
## 79
print(q3)
## 75%
## 85
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
##
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")
d <- 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 ...
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
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
names(d) <- c('O','S','W','T','M','D')
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]
Phân tổ Temp thành 4 tổ
table(cut(Temp,4))
##
## (81,85] (85,89] (89,93] (93,97]
## 34 17 13 4
lấy dữ liệu từ vị trí dòng 2 cột 5
d[2,5]
## [1] 5
biểu đồ cho số gió (W)
barplot(table(d$W),xlab="Wind",ylab="Frequency")