BÀI TẬP VỀ NHÀ TUẦN 2

Nguyễn Thị Ngọc Hà_2121012474

Cơ sở dữ liệu attititude

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 

BÀI TẬP TUẦN 1

Nguyễn Thị Ngọc Hà_2121012474

Cơ sở dữ liệu attitude: dataset gồm 30 mẫu quan sát và 7 biến. dữ liệu được tổng hợp từ bảng câu hỏi của khoảng 35 nhân viên cho mỗi 30 phòng ban (được chọn ngẫu nhiên). Các con số đưa ra tỷ lệ phần trăm các câu trả lời thuận lợi cho bảy câu hỏi trong mỗi bộ phận. Gồm 7 biến sau:

  • Biến raiting: tỷ lệ đánh giá chung
  • Biến complaints: tỷ lệ khiếu nại nhân viên
  • Biến privileges: tỷ lệ không cho phép đặc quyền
  • Biến learning: tỷ lệ cơ hội để học hỏi
  • Biến raises: tỷ lệ tăng lên dựa trên hiệu suất
  • Biến critical: tỷ lệ phê bình
  • Biến advance: tỷ lệ thăng tiến Thao tác trên dataset
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