data(attitude)
# Trong bài tập này nghiên cứu bộ dữ liệu attitude
m <- attitude
# tạo m có nội dung sao chép bộ dữ liệu
rat71 <- attitude[attitude$rating=="71",]
# tạo ra 1 biến mới là rat71 mang giá trị của bộ dữ liệu attitude với biến rating = 71
not71 <- attitude[!attitude$rating=="71",]
# thêm dấu chấm than vào hàm, ta được biến not71 mang giá trị của bộ dữ liệu attitude với biến rating không mang giá trị 71
summary(attitude$rating)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 40.00 58.75 65.50 64.63 71.75 85.00
# tóm tắt những giá trị như phương sai, giá trị trung bình, giá trị lớn nhất, giá trị nhỏ nhất, độ lệch chuẩn
attitude$advance<- cut(attitude$rating,breaks=c(40.00,56.67,65.5,85.00), lables=c('kém','bình thường','tốt'))
# chia khoảng biến rating thành ba khoảng là kém, bình thường, tốt dựa trên số liệu của bộ dữ liệu đã cho
table(attitude$advance)
##
## (40,56.7] (56.7,65.5] (65.5,85]
## 6 8 15
# lập bảng tần số
k <- table(attitude$advance)
# gán bảng vào biến k
prop.table(k)
##
## (40,56.7] (56.7,65.5] (65.5,85]
## 0.2068966 0.2758621 0.5172414
# lập bảng tỷ lệ của từng khoảng trên tổng số quan sát
hist(k)
# vẽ biểu đồ histogram
mean(attitude$rating)
## [1] 64.63333
# Tính giá trị trung bình của biến rating
sd(attitude$rating)
## [1] 12.17256
# Tính độ lệch chuẩn của biến rating
var(attitude$rating)
## [1] 148.1713
# Tính phương sai của biến rating
quantile(attitude$rating,,4)
## 0% 25% 50% 75% 100%
## 40.00 58.75 65.50 71.75 85.00
# chia dữ liệu biến rating thành 4 phần
aggregate(attitude$rating,list(attitude$advance),FUN='mean')
## Group.1 x
## 1 (40,56.7] 47.83333
## 2 (56.7,65.5] 62.87500
## 3 (65.5,85] 73.93333
# Sử dụng hàm trung bình
attitude_num <- attitude[-5]
# Chúng ta có thể tạo một bảng mới chỉ với các thuộc tính số và xử lýlý
str(attitude_num)
## 'data.frame': 30 obs. of 6 variables:
## $ rating : num 43 63 71 61 81 43 58 71 72 67 ...
## $ complaints: num 51 64 70 63 78 55 67 75 82 61 ...
## $ privileges: num 30 51 68 45 56 49 42 50 72 45 ...
## $ learning : num 39 54 69 47 66 44 56 55 67 47 ...
## $ critical : num 92 73 86 84 83 49 68 66 83 80 ...
## $ advance : Factor w/ 3 levels "(40,56.7]","(56.7,65.5]",..: 1 2 3 2 3 1 2 3 3 3 ...
# hiển thị cấu trúc dữ liệu
library(tidyverse)
## ── 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
# liệt kê thư viên tidyverse sẵn dùng trong môi trường R
library(ggplot2)
# liệt kê thư viên ggplot2 sẵn dùng trong môi trường R
ha <- attitude
# gán ha cho bộ dữ liệu attitude
str(ha)
## 'data.frame': 30 obs. of 7 variables:
## $ rating : num 43 63 71 61 81 43 58 71 72 67 ...
## $ complaints: num 51 64 70 63 78 55 67 75 82 61 ...
## $ privileges: num 30 51 68 45 56 49 42 50 72 45 ...
## $ learning : num 39 54 69 47 66 44 56 55 67 47 ...
## $ raises : num 61 63 76 54 71 54 66 70 71 62 ...
## $ critical : num 92 73 86 84 83 49 68 66 83 80 ...
## $ advance : Factor w/ 3 levels "(40,56.7]","(56.7,65.5]",..: 1 2 3 2 3 1 2 3 3 3 ...
# hiển thị cấu trúc dữ liệu
names(ha) <- c("rat","com","pri","lea","rai","cri","adv")
# thay các tên biến trong ha
data(attitude)
c <- (attitude)
#gán bộ dữ liệu vào c
str(c)
## 'data.frame': 30 obs. of 7 variables:
## $ rating : num 43 63 71 61 81 43 58 71 72 67 ...
## $ complaints: num 51 64 70 63 78 55 67 75 82 61 ...
## $ privileges: num 30 51 68 45 56 49 42 50 72 45 ...
## $ learning : num 39 54 69 47 66 44 56 55 67 47 ...
## $ raises : num 61 63 76 54 71 54 66 70 71 62 ...
## $ critical : num 92 73 86 84 83 49 68 66 83 80 ...
## $ advance : num 45 47 48 35 47 34 35 41 31 41 ...
#cấu trúc dataset attitude
names(c) <- c('rat','com','pri','lea','rai','cri','adv')
#đặt tên cho 7 biến có trong dataset
head(c)
## rat com pri lea rai cri adv
## 1 43 51 30 39 61 92 45
## 2 63 64 51 54 63 73 47
## 3 71 70 68 69 76 86 48
## 4 61 63 45 47 54 84 35
## 5 81 78 56 66 71 83 47
## 6 43 55 49 44 54 49 34
#đọc 6 dòng đầu tiên của dữ liệu
del <- c$com
# gán bin com của bộ dữ liệu c vào deldel
del50 <- del[del<50]
#lọc ra những số xử lý khiếu nại của nhân viên nhỏ hơn 50
str(del50)
## num [1:2] 40 37
# cấu trúc của del50
del43 <- del[del>43]
#lọc ra những số xử lý khiểu nại lớn hơn 43
head(del43)
## [1] 51 64 70 63 78 55
# đọc biến del43del43
cut(c$pri,4)
## [1] (29.9,43.2] (43.2,56.5] (56.5,69.8] (43.2,56.5] (43.2,56.5] (43.2,56.5]
## [7] (29.9,43.2] (43.2,56.5] (69.8,83.1] (43.2,56.5] (43.2,56.5] (43.2,56.5]
## [13] (56.5,69.8] (69.8,83.1] (43.2,56.5] (43.2,56.5] (56.5,69.8] (56.5,69.8]
## [19] (43.2,56.5] (56.5,69.8] (29.9,43.2] (43.2,56.5] (43.2,56.5] (29.9,43.2]
## [25] (29.9,43.2] (56.5,69.8] (56.5,69.8] (43.2,56.5] (69.8,83.1] (29.9,43.2]
## Levels: (29.9,43.2] (43.2,56.5] (56.5,69.8] (69.8,83.1]
#phân tổ cho biến pri thành 4 tổ
table(cut(c$pri,4))
##
## (29.9,43.2] (43.2,56.5] (56.5,69.8] (69.8,83.1]
## 6 14 7 3
#lập bảng tần số cho 4 tổ đó
table(cut(c$cri,5),c$com)
##
## 37 40 51 53 54 55 57 58 60 61 62 63 64 66 67 70 75 77 78 82 83 85
## (49,57.6] 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## (57.6,66.2] 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
## (66.2,74.8] 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1
## (74.8,83.4] 0 0 0 0 1 0 1 1 1 2 0 0 0 1 0 0 1 2 1 2 1 1
## (83.4,92] 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0
##
## 90
## (49,57.6] 1
## (57.6,66.2] 0
## (66.2,74.8] 0
## (74.8,83.4] 0
## (83.4,92] 0
#phân tổ biến cri thành 5 khoảng và lập bảng tần số theo biến com
max(c$lea)
## [1] 75
# giá trị lớn nhất của biến tỷ lệ cơ hội để học hỏi
min(c$lea)
## [1] 34
# giá trị nhỏ nhất của biến tỷ lệ cơ hội để học hỏi
group <- c(c$lea, g=2)
# chia biến tỷ lệ cơ hội để học hỏi thành 2 nhóm
table(group)
## group
## 2 34 39 42 44 45 47 48 50 54 55 56 57 58 59 62 63 66 67 69 71 72 74 75
## 1 1 2 1 1 2 2 1 1 2 1 1 1 2 1 1 1 1 1 2 1 2 1 1
#lập bảng