Nguyễn Thị Ngọc Hà_2121012474
Chọn dataset là Superstore_Data: Superstore_Data là một bộ dữ liệu
trong package ggplot2 chứa thông tin về hiệu suất nhiên
liệu của các mẫu xe hơi được sản xuất trong vài năm gần đây và được xếp
hạng từ 1 đến 10 về độ tiết kiệm nhiên liệu.
manufacturer: Nhà sản xuất
model: Mẫu xe
displ: Dung tích động cơ (lít)
year: Năm sản xuất
cyl: Số xy lanh
trans: Loại hộp số
drv: Hệ thống truyền động (F: front-wheel drive, R: rear-wheel drive, 4: 4-wheel drive)
cty: Mức tiêu thụ nhiên liệu trong đô thị (số dặm/gallon)
hwy: Mức tiêu thụ nhiên liệu ngoài đô thị (số dặm/gallon)
fl: Loại nhiên liệu (E: Ethanol E85, D: Diesel, R: Regular gasoline, P: Premium gasoline)
class: Loại xe (2seater, compact, midsize, minivan, pickup, subcompact, SUV, van)
library(ggplot2)
Để gọi dữ liệu Superstore_Data, trước hết bạn cần cài đặt package
ggplot2. Nếu bạn chưa cài đặt package này, hãy nhập lệnh
sau đây:
superstore_data <- as.data.frame(ggplot2::mpg)
Sau khi cài đặt xong, gọi dữ liệu Superstore_Data như sau:
p <- superstore_data
Gán bộ dữ liệu Superstore_data vào p
str(p)
## 'data.frame': 234 obs. of 11 variables:
## $ manufacturer: chr "audi" "audi" "audi" "audi" ...
## $ model : chr "a4" "a4" "a4" "a4" ...
## $ displ : num 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
## $ year : int 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
## $ cyl : int 4 4 4 4 6 6 6 4 4 4 ...
## $ trans : chr "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
## $ drv : chr "f" "f" "f" "f" ...
## $ cty : int 18 21 20 21 16 18 18 18 16 20 ...
## $ hwy : int 29 29 31 30 26 26 27 26 25 28 ...
## $ fl : chr "p" "p" "p" "p" ...
## $ class : chr "compact" "compact" "compact" "compact" ...
In ra cấu trúc của bộ dữ liệu, giúp bạn có được cái nhìn tổng quan về các thông tin, cấu trúc và đặc tính của đối tượng đó.
summary(p)
## manufacturer model displ year
## Length:234 Length:234 Min. :1.600 Min. :1999
## Class :character Class :character 1st Qu.:2.400 1st Qu.:1999
## Mode :character Mode :character Median :3.300 Median :2004
## Mean :3.472 Mean :2004
## 3rd Qu.:4.600 3rd Qu.:2008
## Max. :7.000 Max. :2008
## cyl trans drv cty
## Min. :4.000 Length:234 Length:234 Min. : 9.00
## 1st Qu.:4.000 Class :character Class :character 1st Qu.:14.00
## Median :6.000 Mode :character Mode :character Median :17.00
## Mean :5.889 Mean :16.86
## 3rd Qu.:8.000 3rd Qu.:19.00
## Max. :8.000 Max. :35.00
## hwy fl class
## Min. :12.00 Length:234 Length:234
## 1st Qu.:18.00 Class :character Class :character
## Median :24.00 Mode :character Mode :character
## Mean :23.44
## 3rd Qu.:27.00
## Max. :44.00
Tính số lượng quan sát, giá trị trung bình, giá trị trung vị, min-max, độ lệch chuẩn và các phần vị khác cho từng biến.
names(p) <- c("ma", "md", "ds", "yr", "cy", "tr", "dr", "ct", "hw", "fu", "cl")
Lệnh này sẽ gán các tên ngắn hơn cho các biến trong bộ dữ liệu theo thứ tự tương ứng của tên cột trong bộ dữ liệu.
library(tidyverse)
## Warning: package 'tidyr' was built under R version 4.3.1
## Warning: package 'dplyr' was built under R version 4.3.1
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ lubridate 1.9.2 ✔ tibble 3.2.1
## ✔ purrr 1.0.1 ✔ tidyr 1.3.0
## ── 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
srd <- p %>%
pivot_longer(cols = c('ct','hw') ,
names_to = "ac",
values_to = "number")
Biến đổi dữ liệu từ rộng sang dài, giúp phân tích dữ liệu và thực hiện tính toán dễ dàng hơn. Thực hiện lệnh pivot_longer() cho các biến liên quan đến mức tiêu thụ nhiên liệu của xe ô tô gồm “ct” : Mức tiêu thụ nhiên liệu trong đô thị (số dặm/gallon), “hw”: Mức tiêu thụ nhiên liệu ngoài đô thị (số dặm/gallon) để chuyển trình bày nhữug biến này từ hàng sang cột. Lệnh name_to =“ac” được sử dụng để chỉ định tên của cột mới được tạo ra sau khi chuyển đổi. Lệnh values_to = “number” để chỉ định tên của cột chứa giá trị được tạo ra sau khi chuyển đổi.
Kết quả thu được là tập dữ liệu srd với 468 quan sát và 11 biến, dài gấp đôi so với tập dữ liệu gốc ban đầu.
table(srd$ac)
##
## ct hw
## 234 234
Tạo bảng tần số của biến **“ac” trong bộ dữ liệu srd.
Bảng tần số giúp hiển thị số lần xuất hiện của từng giá trị trong biến.
Kết quả cho thấy rằng biến “ct” thuộc “ac” xuất hiện 234 lần trong “srd”
và bằng con số xuất hiện của biến “hw” thuộc “ac”
library(ggplot2)
ggplot(p, aes(x = cl, y = hw, fill = ma)) +
geom_boxplot() +
labs(title = "Highway MPG by Vehicle Class",
x = "Vehicle Class",
y = "Highway MPG",
fill = "Manufacturer")
Lệnh này sẽ tải gói ggplot2, sau đó tải bộ dữ liệu 'p' và vẽ một biểu đồ hộp (boxplot) với trục x là loại xe ('cl'), trục y là khả năng tiết kiệm nhiên liệu trên xa lộ ('hw') và màu sắc được phân biệt theo nhà sản xuất ('ma').
ggplot(p, aes(x = ds, y = ct, color = cl)) +
geom_point(alpha = 0.6, size = 3) +
labs(title = "City MPG vs. Engine Displacement",
x = "Engine Displacement (L)",
y = "City MPG",
color = "Vehicle Class")
Lệnh này sẽ vẽ một biểu đồ phân tán (scatter plot) với trục x là dung tích động cơ (‘ds’) và trục y là khả năng tiết kiệm nhiên liệu trong thành phố (‘ct’). Màu sắc được phân biệt theo loại xe (‘cl’).Ở đây, chúng ta sử dụng hàm geom_point để thêm các điểm trên đồ thị và sử dụng ‘alpha’ để thiết lập độ trong suốt của điểm và ‘size’ để thiết lập kích thước của từng điểm.
Biểu đồ scatter plot trên cho thấy mối quan hệ giữa khả năng tiết kiệm nhiên liệu trong thành phố (City MPG) và dung tích động cơ (Engine Displacement) của các loại xe hơi theo từng lớp (Vehicle Class).
Các điểm trên đồ thị biểu diễn thông tin của từng xe hơi. Màu sắc của từng điểm biểu hiện cho lớp xe tương ứng của nó. Chúng ta có thể thấy rằng các xe màu trắng biểu thị cho lớp xe “compact” thường có dung tích động cơ nhỏ hơn và tiêu thụ nhiên liệu hiệu quả hơn so với các lớp xe khác, trong khi các xe màu đen biểu thị cho lớp xe “suv” thường có dung tích động cơ lớn hơn và tiêu thụ nhiên liệu kém hơn.
Biểu đồ này giúp chúng ta nhìn thấy một mối quan hệ đáng kể giữa khả năng tiết kiệm nhiên liệu và dung tích động cơ của các loại xe hơi, và cũng giúp chúng ta so sánh khả năng tiết kiệm nhiên liệu giữa các lớp xe khác nhau.
freq_table <- table(p$tr)
freq_table
##
## auto(av) auto(l3) auto(l4) auto(l5) auto(l6) auto(s4) auto(s5)
## 5 2 83 39 6 3 3
## auto(s6) manual(m5) manual(m6)
## 16 58 19
Để lập bảng tần số cho các biểu hiện của biến loại hộp số trong bộ dữ liệu, sử dụng lệnh table() như trên. Kết quả bảng tần số cho thấy rằng loại hộp số tự động (automatic) nhiều hơn loại hộp sốsố thủ công (manual) và nhiều hơn 80 mẫu
prop_table <- prop.table(freq_table) * 100
prop_table
##
## auto(av) auto(l3) auto(l4) auto(l5) auto(l6) auto(s4) auto(s5)
## 2.1367521 0.8547009 35.4700855 16.6666667 2.5641026 1.2820513 1.2820513
## auto(s6) manual(m5) manual(m6)
## 6.8376068 24.7863248 8.1196581
Tính toán phần trăm của mỗi loại hộp số trong tổng số xe và lưu kết quả vào đối tượng prop_table. Kết quả phần trăm cho thấy rằng khoảng 70% các xe sử dụng hộp số tự động và khoảng 30% sử dụng hộp số thủ công. Có thể kết luận rằng hộp số tự động là loại hộp số phổ biến nhất trong bộ dữ liệu, và hầu hết các xe sử dụng loại hộp số này.
barplot(prop_table, main = "Phân phối phần trăm xe theo loại hộp số", ylab = "%")
Biểu đồ phần trăm cột về phân phối số lượng xe của từng loại hộp số trong bộ dữ liệu trông rất đơn giản và dễ hiểu. Biểu đồ cho thấy rõ được tỷ lệ phần trăm của số lượng xe sử dụng mỗi loại hộp số, với đường kẻ ngang trên cùng biểu thị cho 100%.
Ta có thể dễ dàng nhận thấy rằng loại hộp số tự động chiếm phần lớn trong tổng số xe, chiếm khoảng 70%, trong khi đó loại hộp số thủ công chiếm khoảng 30%.
Đây là một cách tốt để trực quan hóa phân phối số lượng xe của mỗi loại hộp số trong bộ dữ liệu, giúp người dùng dễ dàng hiểu được tình hình sử dụng hộp số trong các xe hơi khác nhau.
Chọn dataset: Flight Delays. Đây là một bộ dữ liệu trong ngành hàng không, chứa thông tin về các chuyến bay và thời gian trễ của chúng ở Hoa Kỳ trong năm 2019. Bộ dữ liệu này chứa các thông tin về thời gian bay, điểm xuất phát và điểm đến, hãng hàng không, thời gian trễ, số lượng hành khách, trạng thái chuyến bay và nhiều thông tin khác. Bộ dữ liệu này có tính ứng dụng cao cho các nghiên cứu về hiệu quả hoạt động của các hãng hàng không, hiệu suất sân bay, quản lý hệ thống hàng không và hàng ngàn lĩnh vực khác trong ngành hàng không.
Bộ dữ liệu Flight Delays là một ví dụ điển hình cho việc ứng dụng phân tích dữ liệu trong ngành hàng không để giúp các nhà điều hành và quản lý nghiên cứu và cải thiện hiệu suất vận hành.
Dữ liệu Flight Delays nằm trong package R called “nycflights13”, tương ứng với các chuyến bay trong các sân bay ở New York trong năm 2013. Bộ dữ liệu này bao gồm 5 tập tin dữ liệu, trong đó tập tin “flights” chứa thông tin về các chuyến bay, trong đó bao gồm 19 biến. Các biến trong tập tin “flights” bao gồm:
year: Năm bay (2013).
month: Tháng bay (1-12).
day: Ngày bay (1-31).
dep_time: Thời gian khởi hành (tính bằng phút, ví dụ 930 = 9:30 AM).
sched_dep_time: Thời gian dự kiến khởi hành (tính bằng phút, ví dụ 930 = 9:30 AM).
dep_delay: Thời gian chậm trễ khởi hành (tính bằng phút).
arr_time: Thời gian đến (tính bằng phút, ví dụ 1530 = 3:30 PM).
sched_arr_time: Thời gian dự kiến đến (tính bằng phút, ví dụ 1530 = 3:30 PM).
arr_delay: Thời gian chậm trễ đến (tính bằng phút).
carrier: Mã hãng hàng không.
flight: Số hiệu chuyến bay.
tailnum: Số đuôi máy bay.
origin: Sân bay xuất phát.
dest: Sân bay đích.
air_time: Thời gian bay (tính bằng phút).
distance: Khoảng cách bay (tính bằng dặm).
hour: Giờ khởi hành (local time).
minute: Phút khởi hành (local time).
time_hour: Formatted date/time (local time).
library(nycflights13)
## Warning: package 'nycflights13' was built under R version 4.3.1
data(flights)
f <- flights
summary(f)
## year month day dep_time sched_dep_time
## Min. :2013 Min. : 1.000 Min. : 1.00 Min. : 1 Min. : 106
## 1st Qu.:2013 1st Qu.: 4.000 1st Qu.: 8.00 1st Qu.: 907 1st Qu.: 906
## Median :2013 Median : 7.000 Median :16.00 Median :1401 Median :1359
## Mean :2013 Mean : 6.549 Mean :15.71 Mean :1349 Mean :1344
## 3rd Qu.:2013 3rd Qu.:10.000 3rd Qu.:23.00 3rd Qu.:1744 3rd Qu.:1729
## Max. :2013 Max. :12.000 Max. :31.00 Max. :2400 Max. :2359
## NA's :8255
## dep_delay arr_time sched_arr_time arr_delay
## Min. : -43.00 Min. : 1 Min. : 1 Min. : -86.000
## 1st Qu.: -5.00 1st Qu.:1104 1st Qu.:1124 1st Qu.: -17.000
## Median : -2.00 Median :1535 Median :1556 Median : -5.000
## Mean : 12.64 Mean :1502 Mean :1536 Mean : 6.895
## 3rd Qu.: 11.00 3rd Qu.:1940 3rd Qu.:1945 3rd Qu.: 14.000
## Max. :1301.00 Max. :2400 Max. :2359 Max. :1272.000
## NA's :8255 NA's :8713 NA's :9430
## carrier flight tailnum origin
## Length:336776 Min. : 1 Length:336776 Length:336776
## Class :character 1st Qu.: 553 Class :character Class :character
## Mode :character Median :1496 Mode :character Mode :character
## Mean :1972
## 3rd Qu.:3465
## Max. :8500
##
## dest air_time distance hour
## Length:336776 Min. : 20.0 Min. : 17 Min. : 1.00
## Class :character 1st Qu.: 82.0 1st Qu.: 502 1st Qu.: 9.00
## Mode :character Median :129.0 Median : 872 Median :13.00
## Mean :150.7 Mean :1040 Mean :13.18
## 3rd Qu.:192.0 3rd Qu.:1389 3rd Qu.:17.00
## Max. :695.0 Max. :4983 Max. :23.00
## NA's :9430
## minute time_hour
## Min. : 0.00 Min. :2013-01-01 05:00:00.00
## 1st Qu.: 8.00 1st Qu.:2013-04-04 13:00:00.00
## Median :29.00 Median :2013-07-03 10:00:00.00
## Mean :26.23 Mean :2013-07-03 05:22:54.64
## 3rd Qu.:44.00 3rd Qu.:2013-10-01 07:00:00.00
## Max. :59.00 Max. :2013-12-31 23:00:00.00
##
names(f) <- c("yr", "mt", "dy", "dt", "sdt", "dd", "at", "sat", "ad", "ca", "fl","ta","or","de","ai","ds","hr","mi","th")
plot(f$ai, f$ad)
Đồ thị phân tán (scatter plot) giữa các biến “air_time” và “arr_delay” có thể giúp chúng ta hiểu được mối tương quan giữa thời gian bay (air_time) và thời gian chậm trễ đến (arr_delay) của các chuyến bay. Đồ thị phân tán cho thấy một mối tương quan âm giữa thời gian bay (air_time) và thời gian chậm trễ đến (arr_delay), có nghĩa là, khi thời gian bay tăng, thời gian chậm trễ đến giảm. Tuy nhiên, mối tương quan này không mạnh lắm và không đồng đều trên toàn bộ phạm vi của dữ liệu. Việc xác định mức độ ảnh hưởng của thời gian bay đến thời gian chậm trễ đến có thể cần phải sử dụng các phương pháp khác như phân tích hồi quy tuyến tính để xác định rõ hơn.
library(ggplot2)
library(tidyr)
f_wide <- f %>% pivot_wider(names_from = mt, values_from = c(dd, at))
head(f_wide)
## # A tibble: 6 × 40
## yr dy dt sdt sat ad ca fl ta or de ai ds
## <int> <int> <int> <int> <int> <dbl> <chr> <int> <chr> <chr> <chr> <dbl> <dbl>
## 1 2013 1 517 515 819 11 UA 1545 N14228 EWR IAH 227 1400
## 2 2013 1 533 529 830 20 UA 1714 N24211 LGA IAH 227 1416
## 3 2013 1 542 540 850 33 AA 1141 N619AA JFK MIA 160 1089
## 4 2013 1 544 545 1022 -18 B6 725 N804JB JFK BQN 183 1576
## 5 2013 1 554 600 837 -25 DL 461 N668DN LGA ATL 116 762
## 6 2013 1 554 558 728 12 UA 1696 N39463 EWR ORD 150 719
## # ℹ 27 more variables: hr <dbl>, mi <dbl>, th <dttm>, dd_1 <dbl>, dd_10 <dbl>,
## # dd_11 <dbl>, dd_12 <dbl>, dd_2 <dbl>, dd_3 <dbl>, dd_4 <dbl>, dd_5 <dbl>,
## # dd_6 <dbl>, dd_7 <dbl>, dd_8 <dbl>, dd_9 <dbl>, at_1 <int>, at_10 <int>,
## # at_11 <int>, at_12 <int>, at_2 <int>, at_3 <int>, at_4 <int>, at_5 <int>,
## # at_6 <int>, at_7 <int>, at_8 <int>, at_9 <int>
Trong câu lệnh trên, sử dụng thư viện ggplot2 để nhập bộ dữ liệu ‘f’ và thư viện ‘tidyr’ để sử dụng hàm pivot_wider() để chuyển đổi bộ dữ liệu từ dạng long sang dạng wide.
Thay vì giữ bộ dữ liệu ‘f’ theo định dạng gốc, ta đã tạo ra một bản sao của bộ dữ liệu với tên “f_wide”. Biến “names_from” trong câu lệnh pivot_wider để biết tên của các cột cần được chuyển đổi từ dạng chéo sang dạng rộng, trong trường hợp này là tháng bay **mmt* . Biến “values_from” để biết tên của các cột ở dạng long mà chúng ta muốn đưa vào các cột tương ứng trong bảng dạng wide.
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)
# 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
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
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