1 TUẦN 7

1.1 SCRAPE DATA

Bài tập tuần này em thực hiện việc cào dữ liệu trên web https://stathead.com/ , web này cung cấp cho ta các thông tin về Vé toàn quyền truy cập của bạn vào cơ sở dữ liệu các môn thể thao. Cụ thể thì em đã cào dữ liệu về bảng xếp hạng hàng tuần của các đội NCAA(Quốc gia Hiệp hội trường đại học thể thao) hàng đầu ở một trong ba môn thể thao đại học Division I : bóng đá , bóng rổ nam và bóng rổ nữ

library(rvest)
## Warning: package 'rvest' was built under R version 4.2.3
url <- 'https://www.sports-reference.com/cbb/schools/bethune-cookman/2020-schedule.html'
schedule <- url %>% read_html %>%  html_node('table#schedule') %>% html_table() 
schedule
## # A tibble: 30 × 16
##        G Date    Time  Type  ``    Opponent Conf     SRS ``       Tm   Opp OT   
##    <int> <chr>   <chr> <chr> <chr> <chr>    <chr>  <dbl> <chr> <int> <int> <chr>
##  1     1 Wed, N… 7:00p REG   ""    Johnson… ""     NA    W       110    68 ""   
##  2     2 Sat, N… 8:00p REG   "@"   Texas T… "Big…  16.8  L        44    79 ""   
##  3     3 Mon, N… 8:30p REG   "@"   Omaha    "Sum…  -5.09 L        61    90 ""   
##  4     4 Fri, N… 7:00p REG   ""    Trinity… ""     NA    W       100    42 ""   
##  5     5 Fri, N… 1:00p REG   "@"   Incarna… "Sou… -18.6  W        83    58 ""   
##  6     6 Sat, N… 1:00p REG   "N"   Eastern… "OVC"  -5.08 W        66    63 ""   
##  7     7 Sun, N… 1:00p REG   "N"   St. Fra… ""     NA    W        74    70 ""   
##  8     8 Sun, D… 6:00p REG   "@"   Georgia… "ACC"  10.5  L        65    68 ""   
##  9     9 Tue, D… 7:00p REG   "@"   Stetson  "A-S…  -9.63 L        67    72 ""   
## 10    10 Sat, D… 6:00p REG   "@"   Jackson… "A-S…  -6.5  L        60    82 ""   
## # ℹ 20 more rows
## # ℹ 4 more variables: W <int>, L <int>, Streak <chr>, Arena <chr>

1.2 Tổng quan dữ liệu

Game:

Date: thời gian

Timezone: múi giờ

Type:

  • REG = Regular Season

  • CTOURN = Conference Tournament

  • NCAA = NCAA Tournamnet

  • NIT = National Invitation Tournament

  • CBI = College

  • CIT = CollegeInsider.com Tournament

Opponent: đối thủ

Conference: hội nghị

Symple Rating System: hệ thống đánh giá

Tm(Points): điểm số

Opponent Points: điểm đối thủ

Wins: bàn thắng

Losses: bàn thua

Streak: chuỗi (thời kì thua hoặc thắng liên tục)

Arena: đấu trường

 table(schedule$`Date`)
## 
## Fri, Nov 15, 2019 Fri, Nov 22, 2019 Mon, Feb 10, 2020 Mon, Feb 17, 2020 
##                 1                 1                 1                 1 
## Mon, Feb 24, 2020 Mon, Jan 13, 2020 Mon, Jan 27, 2020  Mon, Jan 6, 2020 
##                 1                 1                 1                 1 
##  Mon, Mar 2, 2020 Mon, Nov 11, 2019 Sat, Dec 14, 2019 Sat, Dec 21, 2019 
##                 1                 1                 1                 1 
##  Sat, Dec 7, 2019  Sat, Feb 1, 2020 Sat, Feb 15, 2020 Sat, Feb 22, 2020 
##                 1                 1                 1                 1 
##  Sat, Feb 8, 2020 Sat, Jan 11, 2020 Sat, Jan 18, 2020 Sat, Jan 25, 2020 
##                 1                 1                 1                 1 
##  Sat, Jan 4, 2020 Sat, Nov 23, 2019  Sat, Nov 9, 2019  Sun, Dec 1, 2019 
##                 1                 1                 1                 1 
## Sun, Dec 29, 2019 Sun, Nov 24, 2019  Tue, Dec 3, 2019  Thu, Mar 5, 2020 
##                 1                 1                 1                 1 
## Wed, Dec 18, 2019  Wed, Nov 6, 2019 
##                 1                 1
airquality[airquality$Month == 5, ]
##    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
## 7     23     299  8.6   65     5   7
## 8     19      99 13.8   59     5   8
## 9      8      19 20.1   61     5   9
## 10    NA     194  8.6   69     5  10
## 11     7      NA  6.9   74     5  11
## 12    16     256  9.7   69     5  12
## 13    11     290  9.2   66     5  13
## 14    14     274 10.9   68     5  14
## 15    18      65 13.2   58     5  15
## 16    14     334 11.5   64     5  16
## 17    34     307 12.0   66     5  17
## 18     6      78 18.4   57     5  18
## 19    30     322 11.5   68     5  19
## 20    11      44  9.7   62     5  20
## 21     1       8  9.7   59     5  21
## 22    11     320 16.6   73     5  22
## 23     4      25  9.7   61     5  23
## 24    32      92 12.0   61     5  24
## 25    NA      66 16.6   57     5  25
## 26    NA     266 14.9   58     5  26
## 27    NA      NA  8.0   57     5  27
## 28    23      13 12.0   67     5  28
## 29    45     252 14.9   81     5  29
## 30   115     223  5.7   79     5  30
## 31    37     279  7.4   76     5  31
subset(airquality, Month == 5)  
##    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
## 7     23     299  8.6   65     5   7
## 8     19      99 13.8   59     5   8
## 9      8      19 20.1   61     5   9
## 10    NA     194  8.6   69     5  10
## 11     7      NA  6.9   74     5  11
## 12    16     256  9.7   69     5  12
## 13    11     290  9.2   66     5  13
## 14    14     274 10.9   68     5  14
## 15    18      65 13.2   58     5  15
## 16    14     334 11.5   64     5  16
## 17    34     307 12.0   66     5  17
## 18     6      78 18.4   57     5  18
## 19    30     322 11.5   68     5  19
## 20    11      44  9.7   62     5  20
## 21     1       8  9.7   59     5  21
## 22    11     320 16.6   73     5  22
## 23     4      25  9.7   61     5  23
## 24    32      92 12.0   61     5  24
## 25    NA      66 16.6   57     5  25
## 26    NA     266 14.9   58     5  26
## 27    NA      NA  8.0   57     5  27
## 28    23      13 12.0   67     5  28
## 29    45     252 14.9   81     5  29
## 30   115     223  5.7   79     5  30
## 31    37     279  7.4   76     5  31
with(airquality, airquality[Month == 5, ])
##    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
## 7     23     299  8.6   65     5   7
## 8     19      99 13.8   59     5   8
## 9      8      19 20.1   61     5   9
## 10    NA     194  8.6   69     5  10
## 11     7      NA  6.9   74     5  11
## 12    16     256  9.7   69     5  12
## 13    11     290  9.2   66     5  13
## 14    14     274 10.9   68     5  14
## 15    18      65 13.2   58     5  15
## 16    14     334 11.5   64     5  16
## 17    34     307 12.0   66     5  17
## 18     6      78 18.4   57     5  18
## 19    30     322 11.5   68     5  19
## 20    11      44  9.7   62     5  20
## 21     1       8  9.7   59     5  21
## 22    11     320 16.6   73     5  22
## 23     4      25  9.7   61     5  23
## 24    32      92 12.0   61     5  24
## 25    NA      66 16.6   57     5  25
## 26    NA     266 14.9   58     5  26
## 27    NA      NA  8.0   57     5  27
## 28    23      13 12.0   67     5  28
## 29    45     252 14.9   81     5  29
## 30   115     223  5.7   79     5  30
## 31    37     279  7.4   76     5  31
data_1 <- with(airquality, airquality[Month == 5, ])

1.3 FUNCTION

my.first.function <- function(v) {
  return(c(mean(v),sd(v)))
}

my.first.function(schedule$G)
## [1] 15.500000  8.803408

1.4 INDICATORS

1.4.1 Indicator= SL.TLF.ADVN.ZS

Chỉ số này cho biết về phần trăm của lực lượng lao động có trình độ học vấn cao. Chỉ số này là một phần quan trọng của việc nắm bắt sự phân bố của trình độ học vấn trong lực lượng lao động của một quốc gia

library(WDI)
## Warning: package 'WDI' was built under R version 4.2.3
pmp <- WDI(indicator= "SL.TLF.ADVN.ZS")
pmp <- WDI(indicator = "SL.TLF.ADVN.ZS")
pmp <- na.omit(pmp)
pmp3 <- WDI(indicator  ="SL.TLF.ADVN.ZS")
head(pmp3)
##                       country iso2c iso3c year SL.TLF.ADVN.ZS
## 1 Africa Eastern and Southern    ZH   AFE 2022             NA
## 2 Africa Eastern and Southern    ZH   AFE 2021             NA
## 3 Africa Eastern and Southern    ZH   AFE 2020             NA
## 4 Africa Eastern and Southern    ZH   AFE 2019             NA
## 5 Africa Eastern and Southern    ZH   AFE 2018             NA
## 6 Africa Eastern and Southern    ZH   AFE 2017             NA

1.4.2 Indicator= EN.ATM.CO2E.KT

Chỉ số này là chỉ số biểu hiện nội dung Carbon dioxide emissions. Chỉ số này đo lường khí thải CO2 gây ra bởi sự đốt cháy nhiên liệu hóa thạch và sản xuất xi măng. chỉ số này cho ta được theo dõi và so sánh khí thải CO2 giữa các quốc gia và theo thời gian, giúp đánh giá mức độ ảnh hưởng của các hoạt động công nghiệp và sử dụng năng lượng đến biến đổi khí hậu và môi trường.

pmp2 <- WDI(indicator  ="EN.ATM.CO2E.KT")
head(pmp2)
##                       country iso2c iso3c year EN.ATM.CO2E.KT
## 1 Africa Eastern and Southern    ZH   AFE 2022             NA
## 2 Africa Eastern and Southern    ZH   AFE 2021             NA
## 3 Africa Eastern and Southern    ZH   AFE 2020       544952.5
## 4 Africa Eastern and Southern    ZH   AFE 2019       610723.5
## 5 Africa Eastern and Southern    ZH   AFE 2018       598721.0
## 6 Africa Eastern and Southern    ZH   AFE 2017       590905.5

1.4.3 Indicator= SP.POP.TOTL

Đây là chỉ số về tổng dân số của các quốc gia trên thế giới. Chỉ số này đo lường số lượng dân cư trên một địa lý cụ thể, không phân biệt về tình trạng pháp lý hoặc quốc tịch của các cư dân.

pmp3 <- WDI(indicator  ="SP.POP.TOTL", latest = 20 )
head(pmp3)
##                       country iso2c iso3c year SP.POP.TOTL
## 1 Africa Eastern and Southern    ZH   AFE 2022   720839314
## 2 Africa Eastern and Southern    ZH   AFE 2021   702977106
## 3 Africa Eastern and Southern    ZH   AFE 2020   685112979
## 4 Africa Eastern and Southern    ZH   AFE 2019   667242986
## 5 Africa Eastern and Southern    ZH   AFE 2018   649757148
## 6 Africa Eastern and Southern    ZH   AFE 2017   632746570

1.4.4 Indicator = JI.UEM.NEET.HE.ZS

chỉ số dùng để đo lường tỷ lệ của thanh niên (từ 15-24 tuổi) đã hoàn thành học vấn trên trình độ tiểu học nhưng không có việc làm hoặc không đang theo học (% của dân số thanh niên có trình độ học vấn cao). Chỉ số này giúp đánh giá tình hình thất nghiệp và không theo học trong nhóm dân số có trình độ học vấn cao. Nếu tỷ lệ này cao, nó có thể là dấu hiệu của vấn đề trong việc tạo ra cơ hội việc làm cho những người trẻ tuổi có trình độ học vấn cao hoặc khả năng chưa đủ để thu hút họ vào hệ thống giáo dục tiếp theo. Chỉ số này cũng là một cảnh báo về nguy cơ lãng phí nguồn lực nhân lực có giá trị, bởi vì những người trẻ tuổi có học vấn cao thường mang lại nhiều giá trị cho nền kinh tế và xã hội.

pmp4 <- WDI(indicator  ="JI.UEM.NEET.HE.ZS")
head(pmp4)
##       country iso2c iso3c year JI.UEM.NEET.HE.ZS
## 1 Afghanistan   AFG       2021                NA
## 2 Afghanistan   AFG       2020                NA
## 3 Afghanistan   AFG       2019                NA
## 4 Afghanistan   AFG       2018                NA
## 5 Afghanistan   AFG       2017                NA
## 6 Afghanistan   AFG       2016                NA

1.4.5 Indicator= SP.DYN.LE00.IN

Chỉ số này là một chỉ số thống kê về tuổi thọ khi sinh, tức là số năm trung bình mà một em bé mới sinh được dự kiến sống nếu mô hình tử vong tại thời điểm sinh của nó không thay đổi trong suốt cuộc đời. Chỉ số này có ý nghĩa quan trọng trong việc đo lường tình trạng sức khỏe của một quốc gia. Nó cho thấy mức độ tử vong tổng thể trong dân số và tóm lược mô hình tử vong tồn tại ở tất cả các nhóm tuổi trong một năm cụ thể. Nó được tính dựa trên bảng tuổi thọ theo giai đoạn, cung cấp một cái nhìn tổng quan về mô hình tử vong của dân số tại một thời điểm nhất định.

pmp5 <- WDI(indicator  ="SP.DYN.LE00.IN")
head(pmp5)
##                       country iso2c iso3c year SP.DYN.LE00.IN
## 1 Africa Eastern and Southern    ZH   AFE 2022             NA
## 2 Africa Eastern and Southern    ZH   AFE 2021       62.45459
## 3 Africa Eastern and Southern    ZH   AFE 2020       63.31386
## 4 Africa Eastern and Southern    ZH   AFE 2019       63.75568
## 5 Africa Eastern and Southern    ZH   AFE 2018       63.36586
## 6 Africa Eastern and Southern    ZH   AFE 2017       62.92239

1.4.6 Indicator= SE.XPD.PRIM.ZS

Chỉ số này là chỉ số đại diện cho tỷ lệ chi tiêu cho giáo dục tiểu học so với tổng chi tiêu chung của chính phủ cho giáo dục. Chi tiêu chung của chính phủ thường bao gồm chính phủ địa phương, khu vực và trung ương. Dữ liệu cho chỉ số này thường được thu thập từ các cơ quan giáo dục quốc gia, cơ quan thống kê và tổ chức quốc tế như UNESCO và Ngân hàng Thế giới.

pmp6 <- WDI(indicator  ="SE.XPD.PRIM.ZS")
pmp6 <- na.omit(pmp6)
head(pmp6)
##                       country iso2c iso3c year SE.XPD.PRIM.ZS
## 72 Africa Western and Central    ZI   AFW 2014       43.14119
## 73 Africa Western and Central    ZI   AFW 2013       43.20938
## 74 Africa Western and Central    ZI   AFW 2012       46.70011
## 75 Africa Western and Central    ZI   AFW 2011       45.07309
## 76 Africa Western and Central    ZI   AFW 2010       47.13305
## 77 Africa Western and Central    ZI   AFW 2009       48.44996

1.4.7 Indicator= NV.AGR.TOTL.KD.ZG

Chỉ số này thể hiện tỷ lệ phần trăm tăng trưởng thực của sản xuất nông nghiệp (%). Chỉ số này được điều chỉnh theo giá trị thực, tức là đã được điều chỉnh để loại bỏ yếu tố tác động của lạm phát. Do đó, chỉ số này cung cấp một đánh giá chính xác hơn về tăng trưởng thực sự trong sản xuất nông nghiệp so với việc sử dụng giá trị không điều chỉnh

pmp7 <- WDI(indicator = "NV.AGR.TOTL.KD.ZG")
pmp7 <- na.omit(pmp7)
head(pmp7)
##                       country iso2c iso3c year NV.AGR.TOTL.KD.ZG
## 1 Africa Eastern and Southern    ZH   AFE 2022          2.557612
## 2 Africa Eastern and Southern    ZH   AFE 2021          4.023727
## 3 Africa Eastern and Southern    ZH   AFE 2020          3.146676
## 4 Africa Eastern and Southern    ZH   AFE 2019          1.444204
## 5 Africa Eastern and Southern    ZH   AFE 2018          1.816118
## 6 Africa Eastern and Southern    ZH   AFE 2017          3.700976

1.4.8 Indicator= BI.WAG.PREM.PB.FM.ED

Đây là một chỉ số liên quan trong lĩnh vực quản trị doanh nghiệp, liên quan đến việc sử dụng công nghệ thông tin và dữ liệu để tối ưu hóa quản lý nhân sự, tài chính và phát triển nhân viên trong một tổ chức.

pmp8 <- WDI(indicator = "BI.WAG.PREM.PB.FM.ED")
pmp8 <- na.omit(pmp8)
head(pmp8)
##       country iso2c iso3c year BI.WAG.PREM.PB.FM.ED
## 37    Albania    AL   ALB 2005         8.765462e-05
## 40    Albania    AL   ALB 2002         6.978792e-02
## 130 Argentina    AR   ARG 2017         4.321961e-04
## 133 Argentina    AR   ARG 2014         5.650439e-02
## 134 Argentina    AR   ARG 2013         1.978011e-05
## 135 Argentina    AR   ARG 2012         3.715077e-03

1.4.9 Indicator= TX.VAL.MRCH.RS.ZS

Đây là chỉ số về Xuất khẩu hàng hoá và cho biết mức giá trị hàng hoá mà một quốc gia xuất khẩu trong một năm. Chỉ số này cho biết mức độ phát triển và hiệu suất của một quốc gia, do đó mức độ càng cao thì quốc gia đó càng phát triển và hiệu suất xuất khẩu của nó càng tốt.

pmp9 <- WDI(indicator = "TX.VAL.MRCH.RS.ZS")
pmp9 <- na.omit(pmp9)
head(pmp9)
##                       country iso2c iso3c year TX.VAL.MRCH.RS.ZS
## 3 Africa Eastern and Southern    ZH   AFE 2020          5.270043
## 4 Africa Eastern and Southern    ZH   AFE 2019          3.443316
## 5 Africa Eastern and Southern    ZH   AFE 2018          4.701532
## 6 Africa Eastern and Southern    ZH   AFE 2017          4.674258
## 7 Africa Eastern and Southern    ZH   AFE 2016          5.107069
## 8 Africa Eastern and Southern    ZH   AFE 2015          5.932892

1.4.10 Indicator= CC.SP.EXP.ZS

Đây là chỉ số về bảo trợ xã hội, chỉ số này có thể hiểu là tổng thể các biện pháp, các chính sách, các hình thức khác nhau mà Nhà Nước và cộng đồng giúp đỡ đối với các đối tượng bị lâm vào cảnh rủi ro, bất hạnh, nghèo đói, khuyết tật,… vì nhiều nguyên nhân khác nhau dẫn đến không đủ khả năng tự lo liệu cho cuộc sống của bản thân và gia đình, nhằm giúp họ tránh được mối đe dọa của cuộc sống thường nhật hoặc giúp họ vượt qua những khó khăn, ổn định cuộc sống và hòa nhập cộng đồng.

pmp10 <- WDI(indicator= "CC.SP.EXP.ZS")
head(pmp10)
##        country iso2c iso3c year CC.SP.EXP.ZS
## 1 Cook Islands   COK       2028           NA
## 2 Cook Islands   COK       2027           NA
## 3 Cook Islands   COK       2026           NA
## 4 Cook Islands   COK       2025           NA
## 5 Cook Islands   COK       2024           NA
## 6 Cook Islands   COK       2023           NA

2 BÀI TẬP TUẦN 4 + 5 + 6

2.1 Tổng quan về bộ dữ liệu

Đây là bộ dữ liệu về cung cấp thông tin toàn diện về sở thích và hành vi của khách hàng liên quan đến đặt chỗ cho kỳ nghỉ của hãng hàng không. Với các thuộc tính chi tiết bao gồm các khía cạnh khác nhau của quy trình đặt vé, bộ dữ liệu này rất lý tưởng để phân tích và hiểu các lựa chọn cũng như mô hình của khách hàng trong ngành hàng không.

Bộ dữ liệu này được lấy từ tác giả Manish kumar ( Chủ sở hữu )

Sơ lược về bộ dữ liệu thì đây là data Passanger_booking bao gồm có 50002 quan sát và 14 biến, cụ thể từng biến sẽ được diễn giải tiếp tục phần kế tiếp:

  • num_passenger: số thứ tự hành khách

  • sales_channel: khách hàng tiếp cận đến trang web của chúng tôi

  • trip_type: Loại vé trong chuyến đi

  • purchase_lead: khoảng thời gian giữa ngày đặt phòng và ngày đi du lịch

  • length_of_stay: thời gian ở lại của trong suốt kì nghỉ

  • flight_hour: chỉ định giờ của chuyến bay

  • flight_day: cho biết ngày mà chuyến bay sẽ khởi hành

  • route: chỉ định đường bay

  • booking_origin: mô tả nguồn đặt phòng từ bởi các quốc gia

  • wants_extra_baggage: cho biết liệu khách hàng có bày tỏ mong muốn mang thêm hành lý miễn trả phí hay không.

  • wants_preferred_seat: cho biết liệu khách hàng có mong muốn được chỗ ngồi tốt hơn.

  • wants_in_flight_meals: cho biết liệu khách hàng có mong muốn được bữa ăn ngon trên chuyến bay hay không.

  • filght_duration: thời gian của chuyến bay

  • booking_complete: đặt phòng đã được xác nhận, sau khi khách đã check out

2.2 Thao tác trên dữ liệu đã tìm được

Passanger_booking <- read.csv("C:/Users/84703/AppData/Local/Temp/Temp1_archive (1).zip/Passanger_booking_data.csv")
str(Passanger_booking)
## 'data.frame':    50002 obs. of  14 variables:
##  $ num_passengers       : int  1 2 1 2 1 2 1 3 2 1 ...
##  $ sales_channel        : chr  "Internet" "Internet" "Internet" "Internet" ...
##  $ trip_type            : chr  "RoundTrip" "RoundTrip" "RoundTrip" "RoundTrip" ...
##  $ purchase_lead        : int  21 262 112 243 96 68 3 201 238 80 ...
##  $ length_of_stay       : int  12 19 20 22 31 22 48 33 19 22 ...
##  $ flight_hour          : int  6 7 3 17 4 15 20 6 14 4 ...
##  $ flight_day           : chr  "Tue" "Sat" "Sat" "Wed" ...
##  $ route                : chr  "AKLHGH" "AKLDEL" "AKLDEL" "AKLDEL" ...
##  $ booking_origin       : chr  "Australia" "New Zealand" "New Zealand" "India" ...
##  $ wants_extra_baggage  : int  0 1 0 1 0 1 1 1 1 0 ...
##  $ wants_preferred_seat : int  0 0 0 1 0 0 0 0 0 0 ...
##  $ wants_in_flight_meals: int  0 0 0 0 1 1 1 1 1 1 ...
##  $ flight_duration      : num  7.21 5.52 5.52 5.52 5.52 5.52 5.52 5.52 5.52 5.52 ...
##  $ booking_complete     : int  1 0 0 0 0 0 0 0 0 0 ...
behaviour = read.csv("C:/Users/84703/AppData/Local/Temp/Temp1_archive (1).zip/Passanger_booking_data.csv") 

Đầu tiên em sẽ thực hiện trên toàn bộ dữ liệu Passanger_booking. Sau đó em gán dữ liệu gốc qua dữ liệu mới có tên là “pass”

pass <- Passanger_booking

Để xem qua cấu trúc dữ liệu, em sẽ dùng lệnh sau

str(pass)
## 'data.frame':    50002 obs. of  14 variables:
##  $ num_passengers       : int  1 2 1 2 1 2 1 3 2 1 ...
##  $ sales_channel        : chr  "Internet" "Internet" "Internet" "Internet" ...
##  $ trip_type            : chr  "RoundTrip" "RoundTrip" "RoundTrip" "RoundTrip" ...
##  $ purchase_lead        : int  21 262 112 243 96 68 3 201 238 80 ...
##  $ length_of_stay       : int  12 19 20 22 31 22 48 33 19 22 ...
##  $ flight_hour          : int  6 7 3 17 4 15 20 6 14 4 ...
##  $ flight_day           : chr  "Tue" "Sat" "Sat" "Wed" ...
##  $ route                : chr  "AKLHGH" "AKLDEL" "AKLDEL" "AKLDEL" ...
##  $ booking_origin       : chr  "Australia" "New Zealand" "New Zealand" "India" ...
##  $ wants_extra_baggage  : int  0 1 0 1 0 1 1 1 1 0 ...
##  $ wants_preferred_seat : int  0 0 0 1 0 0 0 0 0 0 ...
##  $ wants_in_flight_meals: int  0 0 0 0 1 1 1 1 1 1 ...
##  $ flight_duration      : num  7.21 5.52 5.52 5.52 5.52 5.52 5.52 5.52 5.52 5.52 ...
##  $ booking_complete     : int  1 0 0 0 0 0 0 0 0 0 ...

Tiếp đến em sẽ cho hiển thị 6 dữ liệu đầu tiên của tập dữ liệu

head(pass)
##   num_passengers sales_channel trip_type purchase_lead length_of_stay
## 1              1      Internet RoundTrip            21             12
## 2              2      Internet RoundTrip           262             19
## 3              1      Internet RoundTrip           112             20
## 4              2      Internet RoundTrip           243             22
## 5              1      Internet RoundTrip            96             31
## 6              2      Internet RoundTrip            68             22
##   flight_hour flight_day  route booking_origin wants_extra_baggage
## 1           6        Tue AKLHGH      Australia                   0
## 2           7        Sat AKLDEL    New Zealand                   1
## 3           3        Sat AKLDEL    New Zealand                   0
## 4          17        Wed AKLDEL          India                   1
## 5           4        Sat AKLDEL    New Zealand                   0
## 6          15        Wed AKLDEL          India                   1
##   wants_preferred_seat wants_in_flight_meals flight_duration booking_complete
## 1                    0                     0            7.21                1
## 2                    0                     0            5.52                0
## 3                    0                     0            5.52                0
## 4                    1                     0            5.52                0
## 5                    0                     1            5.52                0
## 6                    0                     1            5.52                0

Và kế đến là cho hiển thị tiếp 6 dữ liệu gần nhất của tập dữ liệu

tail(pass)
##       num_passengers sales_channel trip_type purchase_lead length_of_stay
## 49997              2      Internet RoundTrip            25              6
## 49998              2      Internet RoundTrip            27              6
## 49999              1      Internet RoundTrip           111              6
## 50000              1      Internet RoundTrip            24              6
## 50001              1      Internet RoundTrip            15              6
## 50002              1      Internet RoundTrip            19              6
##       flight_hour flight_day  route booking_origin wants_extra_baggage
## 49997           9        Sun PERPNH      Australia                   0
## 49998           9        Sat PERPNH      Australia                   1
## 49999           4        Sun PERPNH      Australia                   0
## 50000          22        Sat PERPNH      Australia                   0
## 50001          11        Mon PERPNH      Australia                   1
## 50002          10        Thu PERPNH      Australia                   0
##       wants_preferred_seat wants_in_flight_meals flight_duration
## 49997                    0                     0            5.62
## 49998                    0                     1            5.62
## 49999                    0                     0            5.62
## 50000                    0                     1            5.62
## 50001                    0                     1            5.62
## 50002                    1                     0            5.62
##       booking_complete
## 49997                0
## 49998                0
## 49999                0
## 50000                0
## 50001                0
## 50002                0
#Show ra cho thầy thấy dữ liệu bảng
library(DT)
datatable(pass)

2.3 Các công thức tính toán được thực hiện

2.3.1 Tính trung bình

mean(pass$flight_duration)
## [1] 7.277524
#Tính trung bình theo loại vé máy bay
aggregate(pass$flight_duration, list(pass$trip_type), FUN = "mean")
##      Group.1        x
## 1 CircleTrip 7.745641
## 2     OneWay 7.966770
## 3  RoundTrip 7.271029

Nhìn qua kết quả vừa thu được thì chuyến đi vòng tròn(có nghĩa là đi từ một điểm và quay trở lại đó bằng một tuyến đường hàng không liên tục , quanh co ; với điều kiện là ở những nơi không có tuyến hàng không trực tiếp theo lịch trình hợp lý giữa hai điểm , việc nghỉ vòng tròn có thể được di chuyển bằng bất kỳ phương tiện giao thông nào khác mà không ảnh hưởng đến chuyến đi vòng tròn.) trung bình là khoảng tầm 7.745641 giờ. Và chuyến đi một chiều có khoảng giờ trung bình là 7.966770, còn lại là chuyến bay khứ hồi với giờ trung bình là 7.271029.

2.3.2 Tính trung vị

median(pass$flight_duration)
## [1] 7.57

2.3.3 Độ lệch chuẩn

sd(pass$flight_duration)
## [1] 1.496854

2.3.4 Phương sai

var(pass$flight_duration)
## [1] 2.240571

2.3.5 Tính tổng

sum(pass$flight_duration)
## [1] 363890.8

2.3.6 Thống kê dữ liệu

summary(pass$flight_duration)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.670   5.620   7.570   7.278   8.830   9.500

2.4 Sử dụng hàm aggregate - toán tử %>%

Hàm group_by() từ dplyr nhóm các hàng theo các giá trị duy nhất trong cột chỉ định. Nếu nhiều cột được chỉ định, các hàng được nhóm theo sự tổ hợp các giá trị thành giá trị duy nhất từ các cột. Mỗi giá trị duy nhất (hoặc tổ hợp các giá trị) tạo thành một nhóm. Những thay đổi sau đó đối với bộ dữ liệu hoặc các phép tính có thể thực hiện tùy theo đặc điểm của mỗi nhóm.

Để thao tác trên các biến, em thực hiện đổi tên lại mục đích là làm cho các biến gọn gàng và dễ thực hiện hơn: num_passenger = ‘np’, sales_channel = ‘sc’, trip_type = ‘tt’, purchase_lead =‘pl’, length_of_stay= ‘lt’, flight_hour = ‘fh’, flight_day = ‘fa’, route = ‘ro’, booking_origin = ‘bo’, wants_extra_baggage = ‘eb’, wants_preferred_seat = ‘ps’, wants_in_flight_meals = ‘fm’, filght_duration = ‘fd’, booking_complete = ‘bc’. Và thêm một cột biến mới vào dữ liệu bằng cách, phân tổ biến tuổi của chủ hộ gia đình 3 tổ (độ tuổi [19-30] gọi là trẻ tuổi, độ tuổi (30-50] gọi là trung niên, độ tuổi (50-60] gọi là cao tuổi). Ngoài ra, em còn biến đổi thêm các cột mới như là TP1, NL1, QA1, R1, PT1, K1 chính là các mức tiền chi tiêu cho thực phẩm, nhiên liệu, quần áo, rượu, phương tiện và các chi tiêu khác bằng cách lấy tỉ lệ % ban đầu mà bộ data cung cấp nhân cho tổng chi tiêu.

names(pass) <- c("np","sc","tt","pl", "lt","fh","fa","ro","bo","eb","ps", "fm","fd","bc")
pass$fdtitle <- cut(pass$fd, breaks=c(4.67,5.07,7,9.5), labels=c("ít","vừa","nhiều"))

aggregate(pass\(trip_type,list(pass\)lenghth_of_stay),FUN = ‘mean’)

2.5 Lọc dữ liệu

Trong mục này, em sẽ lọc dữ liệu với điều kiện sau:

  • Lọc dữ liệu có tổng giờ bay lớn hơn 6.62

  • Lọc dữ liệu có có số thứ tự hành khách có chứa số 3 trong số thứ tự

loca <- pass %>% filter(., fd > 6.62) locb <- pass %>% filter(., np == “2”)


dim(loca)

dim(locb)

Trong số 50002 quan sát, sau khi ta thêm điều kiện tổng giờ bay lớn hơn 6.62. Và số thự tự hành khách có chứa số 3 ở số thứ tự chỉ còn 12804 số

## Bảng tần số và các dạng biểu đồ

### Bảng tần số cho biến lượng thời gian của chuyến bay 


```r
table(pass$fdtitle)
## 
##    ít   vừa nhiều 
##  2666 18893 25700
prop.table(table(pass$fdtitle))
## 
##         ít        vừa      nhiều 
## 0.05641254 0.39977570 0.54381176

{r pass %>% count(fdtitle) %>% mutate(pc = scales::percent(n/sum(n)))

2.5.1 Đồ thị cột cho bảng tần số và tần suất

pass %>% ggplot(aes(fdtitle)) + geom_bar(fill = “orange”) + geom_text(aes(label = scales::percent(after_stat(count / sum(count)), accuracy = .01)), stat = “count”, color = “white”, vjust = -0.5) + theme_classic() + labs(x = Thời lượng, y = “Thời gian của chuyến bay”)













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

## Lời mở đầu

Bộ data mà tuần này tôi đưa đến cho người xem báo cáo đó là bộ **dataset "Journals"** nằm trong **package AER**. Nó cung cấp cho ta thông tin về việc đăng ký tạp chí kinh tế ỏ thư viện Hoa Kỳ vào khoảng năm 2000.

Đây là bộ dữ liệu chứa 180 quan sát với 10 biến bao gồm:

-- **title**: tiêu đề

-- **publisher**: tên nhà xuất bản

-- **society**: yếu tố xã hội. Có lẽ nào tạp chí được xuất bản bởi một tác giả học thuật làm việc ở xã hội

-- **price**: giá mà khi ta đăng ký sách tại thư viện

-- **pages**: số trang giấy

-- **charpp**: ký tự ở trên trang

-- **ciations**: tổng số trích dẫn

-- **foundingyear**: năm tạp chí được thành lập

-- **subs**: số lượng đăng ký ở thư viện

-- **field**: yếu tố về mô tả thực địa(địa bàn trên thực tế)

## Thục hành dữ liệu

### Đầu tiên tôi sẽ gọi bộ dữ liệu **Journals** trong package AER bằng các lệnh như bên dưới



#### Gán data "Journals" vào biến có tên **jo**, rồi sau đó đặt tên lần lượt cho 10 biến trong bộ dữ liệu theo thứ tự là "t", "pu", "so", "pr", "pa", "ch", "ci", "fo", "su", "fi" bằng lệnh **names**


```r
jou <- Journals
names(jou) <- c("t", "pu", "so", "pr", "pa", "ch", "ci", "fo", "su", "fi")

Tiếp đến ta dùng lệnh summary để nhìn tổng quát dữ liệu

summary(jou)
##       t                                 pu       so            pr        
##  Length:180         Elsevier             :42   no :164   Min.   :  20.0  
##  Class :character   Blackwell            :26   yes: 16   1st Qu.: 134.5  
##  Mode  :character   Kluwer               :16             Median : 282.0  
##                     Springer             :10             Mean   : 417.7  
##                     Academic Press       : 9             3rd Qu.: 540.8  
##                     Univ of Chicago Press: 7             Max.   :2120.0  
##                     (Other)              :70                             
##        pa               ch             ci                fo      
##  Min.   : 167.0   Min.   :1782   Min.   :  21.00   Min.   :1844  
##  1st Qu.: 548.8   1st Qu.:2715   1st Qu.:  97.75   1st Qu.:1963  
##  Median : 693.0   Median :3010   Median : 262.50   Median :1973  
##  Mean   : 827.7   Mean   :3233   Mean   : 647.06   Mean   :1967  
##  3rd Qu.: 974.2   3rd Qu.:3477   3rd Qu.: 656.00   3rd Qu.:1982  
##  Max.   :2632.0   Max.   :6859   Max.   :8999.00   Max.   :1996  
##                                                                  
##        su                          fi    
##  Min.   :   2.0   General           :40  
##  1st Qu.:  52.0   Specialized       :14  
##  Median : 122.5   Public Finance    :12  
##  Mean   : 196.9   Development       :11  
##  3rd Qu.: 268.2   Finance           :11  
##  Max.   :1098.0   Urban and Regional: 8  
##                   (Other)           :84

Muốn xem 6 dòng đầu và 6 dòng cuối của dữ liệu bao gồm các thông tin về tiêu đề,tên nxb, yếu tố xã hội, giá, số trang giấy, kí tự, tổng số trích dẫn, năm của tạp chí, số lượng đăng ký và yếu tố mô tả thuộc địa ta sử dụng lệnh head và tail

head(jou)
##                                                          t
## APEL                     Asian-Pacific Economic Literature
## SAJoEH           South African Journal of Economic History
## CE                                 Computational Economics
## MEPiTE MOCT-MOST Economic Policy in Transitional Economics
## JoSE                            Journal of Socio-Economics
## LabEc                                     Labour Economics
##                            pu so  pr  pa   ch ci   fo su                fi
## APEL                Blackwell no 123 440 3822 21 1986 14           General
## SAJoEH So Afr ec history assn no  20 309 1782 22 1986 59  Economic History
## CE                     Kluwer no 443 567 2924 22 1987 17       Specialized
## MEPiTE                 Kluwer no 276 520 3234 22 1991  2      Area Studies
## JoSE                 Elsevier no 295 791 3024 24 1972 96 Interdisciplinary
## LabEc                Elsevier no 344 609 2967 24 1994 15             Labor
tail(jou)
##                                                       t                    pu
## JASA    Journal of the American Statistical Association  Am. Statistical Assn
## JoFi                                 Journal of Finance      Am. Finance Assn
## QJoE                     Quarterly Journal of Economics             MIT press
## JoPolEc                    Journal of Political Economy Univ of Chicago Press
## Ecnmt                                      Econometrica             Blackwell
## AER                            American Economic Review            Am Ec Assn
##          so  pr   pa   ch   ci   fo   su           fi
## JASA    yes 310 1260 5664 2800 1971  487 Econometrics
## JoFi    yes 226 2272 3036 3791 1945  799      Finance
## QJoE     no 148 1467 2184 4138 1886  660      General
## JoPolEc  no 159 1669 2640 6697 1892  737      General
## Ecnmt   yes 178 1482 2992 7943 1932  346      General
## AER     yes  47 1867 3900 8999 1911 1098      General

Qua đó để muốn phân tích được dữ liệu, ta sẽ xem qua cấu trúc của dữ liệu

str(jou)
## 'data.frame':    180 obs. of  10 variables:
##  $ t : chr  "Asian-Pacific Economic Literature" "South African Journal of Economic History" "Computational Economics" "MOCT-MOST Economic Policy in Transitional Economics" ...
##  $ pu: Factor w/ 52 levels "ANU Press","Academic Press",..: 11 45 28 28 18 18 13 18 28 11 ...
##  $ so: Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
##  $ pr: int  123 20 443 276 295 344 90 242 226 262 ...
##  $ pa: int  440 309 567 520 791 609 602 665 243 386 ...
##  $ ch: int  3822 1782 2924 3234 3024 2967 3185 2688 3010 2501 ...
##  $ ci: int  21 22 22 22 24 24 24 27 28 30 ...
##  $ fo: int  1986 1986 1987 1991 1972 1994 1995 1968 1987 1949 ...
##  $ su: int  14 59 17 2 96 15 14 202 46 46 ...
##  $ fi: Factor w/ 24 levels "General","Economic History",..: 1 2 3 4 5 6 7 3 4 1 ...

2.6 Đào sâu vào bộ dữ liệu

Để nhóm dữ liệu từ biến jo theo tên nhà xuất bản, tôi dùng lệnh group_by, tiếp theo tôi sẽ dùng hàm summarise để thực hiện tổ hợp các phép tính sau khi nhóm cụ thể là phép tính tổng cho biến price(pr). Bảng kết quả sẽ gán vào total để thực hiện các thao tác tiếp theo.

total<- jou %>%  group_by(pu) %>%
summarise(sum=sum(pr))
total
## # A tibble: 52 × 2
##    pu                     sum
##    <fct>                <int>
##  1 ANU Press               54
##  2 Academic Press        4625
##  3 Agric. Econ. Society    96
##  4 Am Ec Assn             141
##  5 Am Stat Assn            90
##  6 Am. Ag. Econ Assn       81
##  7 Am. Finance Assn       226
##  8 Am. Risk & Ins. Assn    90
##  9 Am. Statistical Assn   310
## 10 Assn Ev. Economics      45
## # ℹ 42 more rows
jou <- Journals

Qua kết quả ở bảng trên, tôi sẽ phân tích cụ thể dữ liêu đã thu được, ở nhà xuất bản Academic Press có giá đăng ký cao nhất tại thư viện là 4625 đô la, Còn nhà xuất bản Assn Ev. Economics có giá đăng ký tại thư viện thấp nhất là 45 đô la

Sau đó tôi vẽ biểu đồ cho bảng kết quả trên, tôi sử dụng lệnh ggplot. Trong đó,trục x là các nhà xuất bản, trục y là tổng giá.

library(ggplot2)
ggplot(total,aes(x=pu,y=sum,fill = pu) )+ geom_col() + labs(x = "nhaxuatban", y = "giatri", fill = "nhaxuatban") + theme_minimal()

Tương tự, tính tổng số trích dẫn của tất cả các nhà xuất bản được nhóm theo năm sau đó gán vào biến y

Tạo bảng

Lập bảng tổng số trích dẫn của các nhà xuất bản theo năm và phân làm 3 nhóm sau đó gán vào các tên

t <- table(cut(jou$su, breaks = c(2,24,222,1098 ),labels = c("it","vua","nhieu")),jou$fo) 
t
##        
##         1844 1852 1865 1886 1890 1892 1898 1911 1918 1919 1922 1925 1928 1930
##   it       0    0    0    0    0    0    0    0    0    0    0    0    0    0
##   vua      1    1    1    0    0    0    1    0    0    0    1    1    0    1
##   nhieu    0    0    0    1    1    1    0    1    1    1    0    1    1    0
##        
##         1932 1933 1939 1941 1943 1945 1947 1948 1949 1952 1953 1954 1958 1960
##   it       0    0    0    0    0    0    0    0    0    0    0    0    0    0
##   vua      0    0    1    0    1    1    0    2    1    0    1    0    1    0
##   nhieu    2    2    0    2    0    1    2    2    1    1    1    1    0    2
##        
##         1961 1962 1963 1964 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975
##   it       0    0    0    1    0    0    0    0    0    0    0    0    1    0
##   vua      1    1    3    2    1    4    1    3    2    4    4    4    3    3
##   nhieu    2    1    1    3    2    2    1    2    4    1    1    1    3    0
##        
##         1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989
##   it       1    0    0    0    0    0    1    1    0    0    2    1    0    1
##   vua      1    3    4    4    4    6    6    2    3    4    3    4    3    1
##   nhieu    0    0    1    0    0    1    1    1    0    0    0    1    0    0
##        
##         1990 1991 1992 1994 1995 1996
##   it       0    1    1    2    1    1
##   vua      3    2    4    1    0    1
##   nhieu    0    0    0    0    0    0

Đồ thị trên cho biết được là ứng với từng mức giá đăng ký tại thư viện thì sẽ có bao nhiêu nhà xuất bản được đăng ký tại thư viện. Khi đọc kết quả đồ thị, ta thấy rằng có nhiều người tham gia khảo sát nhất trả lời rằng họ chi ra mức chi phí khoảng đơn vị cho việc đăng ký này.

2.6.0.1 Trục tọa độ

geom_bar sẽ hiểu các trục tọa độ dưới đây:

x: Trục x y: Trục y alpha: chỉ số alpha colour: màu sắc fill: màu sắc cột group: Phân nhóm để tô màu theo nhóm. linetype: kiểu đường viền size: Kích thước cột

  • Bằng những thao tác đã học ở tuần trước, phân tổ biến foundingyear thành ba nhóm ít, vừa và nhiều. Từ đó ta quan sát được kết quả dữ liệu được tổng hợp lại một cách nhìn sâu hơn.

2.7 PIVOT

2.7.1 Pivot_longer

2.7.1.1 Trình bày dữ liệu bằng lệnh pivot_longer để trình bày dữ liệu từ hàng thành cột(rút gọn bộ dữ liệu)

mp <- jou |> pivot_longer(cols = starts_with('su'),names_to = 'subs', values_to = 'rank')
mp <- jou |> pivot_longer(cols = starts_with('su'),names_to = 'subs', values_to = 'rank', values_drop_na = T)
mp <- jou|> pivot_longer(cols = starts_with('su'),names_to = 'subs', values_to = 'rank', values_drop_na = T) |>mutate(subs = parse_number(subs))
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `subs = parse_number(subs)`.
## Caused by warning:
## ! 180 parsing failures.
## row col expected actual
##   1  -- a number   subs
##   2  -- a number   subs
##   3  -- a number   subs
##   4  -- a number   subs
##   5  -- a number   subs
## ... ... ........ ......
## See problems(...) for more details.
View(mp)
view(billboard)
data(billboard)
bill <- billboard
  • Trong câu lệnh này tôi tiến hành trình bày lại cột dữ liệu subs (số lượt đăng ký ở thư viện) từ 2 đến 1098 thành 1 cột dữ liệu và đặt tên cho cột dữ liệu mới này là rank

2.8 MUTATE_ Hàm mutate có tác dụng tạo thêm một cột biến mới thỏa mãn một điều kiện nào đó hoặc đơn thuần là tạo ra cột biến mới dựa theo một công thức tính toán nào đó.

  • Ta dùng lệnh mutate để mã hóa dữ liệu của biến
jou <- jou 
mp$aa <- seq(1,1,length = length(mp$society))
mp <- mutate(mp,bb = mp$rank + mp$aa)
mp <- mutate(mp,bb = rank + aa)
str(mp)
## tibble [180 × 13] (S3: tbl_df/tbl/data.frame)
##  $ title       : chr [1:180] "Asian-Pacific Economic Literature" "South African Journal of Economic History" "Computational Economics" "MOCT-MOST Economic Policy in Transitional Economics" ...
##  $ publisher   : Factor w/ 52 levels "ANU Press","Academic Press",..: 11 45 28 28 18 18 13 18 28 11 ...
##  $ society     : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
##  $ price       : int [1:180] 123 20 443 276 295 344 90 242 226 262 ...
##  $ pages       : int [1:180] 440 309 567 520 791 609 602 665 243 386 ...
##  $ charpp      : int [1:180] 3822 1782 2924 3234 3024 2967 3185 2688 3010 2501 ...
##  $ citations   : int [1:180] 21 22 22 22 24 24 24 27 28 30 ...
##  $ foundingyear: int [1:180] 1986 1986 1987 1991 1972 1994 1995 1968 1987 1949 ...
##  $ field       : Factor w/ 24 levels "General","Economic History",..: 1 2 3 4 5 6 7 3 4 1 ...
##  $ subs        : num [1:180] NA NA NA NA NA NA NA NA NA NA ...
##   ..- attr(*, "problems")= tibble [180 × 4] (S3: tbl_df/tbl/data.frame)
##   .. ..$ row     : int [1:180] 1 2 3 4 5 6 7 8 9 10 ...
##   .. ..$ col     : int [1:180] NA NA NA NA NA NA NA NA NA NA ...
##   .. ..$ expected: chr [1:180] "a number" "a number" "a number" "a number" ...
##   .. ..$ actual  : chr [1:180] "subs" "subs" "subs" "subs" ...
##  $ rank        : int [1:180] 14 59 17 2 96 15 14 202 46 46 ...
##  $ aa          : num [1:180] 1 1 1 1 1 1 1 1 1 1 ...
##  $ bb          : num [1:180] 15 60 18 3 97 16 15 203 47 47 ...

jour <- jou %>% select(pages,charpp,ptice) %% pivot_wider(names_from = charpp,values_from = price, values_fn = list) jour

2.9 Pivot_wider

Chuyển đổi từ dữ liệu dài sang dữ liệu rộng dựa trên biến foundingyear và giá trị page, citations, subs trong bộ dữ liệu Journals. Với câu lệnh đầu tiên, tạo ra bảng dữ liệu “jodex” với các cột là các năm(cột “foundingyear”) và số trang của tạp chí (“cột page”). Câu lệnh thứ hai, tạo một bảng dữ liệu rộng “joupom” với các cột mới là các năm và các giá trị là ký tự trên các tạp chí được đăng ký của từng nhà xuất bản. Câu lệnh thứ ba tạo ra bảng dữ liệu về subs của từng nhà xuất bản tương ứng. Các bảng có cấu trúc dạng rộng, với mỗi nhà xuất bản (cột “publisher”) và tiêu đề của tạp chí (cột “title”) chỉ xuất hiện một lần và được kết hợp các giá trị giá đăng ký tại thư viện, lượng đăng ký, số trang của tạp chí theo năm của các nhà xuất bản và leenhk arrange sắp xếp theo từng

mp <- mp %%pivot_wider(names_from = society , values_from = number ) mp

2.9.1 Tạo thêm cột cho biến

Sau khi câu lệnh được thực hiện chứng ta có thể thấy trên bảng được tạo thêm một cột mang tên resp thực hiên việc chuyển đổi các dữ liệu của biến case thành số từ ‘no’ tương đương với 0, từ ‘perhaps’ tương dương với 1 và từ ‘yes’ cững là 1.

data(“VerbAgg”) view(VerbAgg) table(VerbAgg\(item) levels(VerbAgg\)item) summary(VerbAgg) VerbAgg <- VerbAgg %>% mutate(respn = case_when(resp == “no” ~ 0,resp == “perhaps” ~ 1, resp == “yes” ~ 1)) library(tidyverse) VerbAgg <- VerbAgg %>% mutate(respn = case_when(resp == “no” ~ 0,resp == “perhaps” ~ 1, resp == “yes” ~ 1)) table(VerbAgg\(resp) VerbAgg <- VerbAgg %>% mutate(respn = case_when(resp == "no" ~ 0,resp == "perhaps" ~ 1, resp == "yes" ~ 1)) table(VerbAgg\)respn) respn_wide <- VerbAgg %>% select(id, item, respn) %>%pivot_wider(names_from = item, values_from = respn) tmp <- VerbAgg %>% select(id, item, respn) respn_wide <- VerbAgg %>% select(id, item, respn) %>%pivot_wider(names_from = item, values_from = respn)

  • Trong câu lệnh select(), chúng ta đã tạo ra một bảng dữ liệu mới với 25 cột xây dựng từ cột item (các mục trên bảng câu hỏi) và 316 hàng là các dữ liệu của id (các chủ đề cần phân tích). Và dữ liệu được thể hiện ở đây là các dữ liệu của biên mới tạo respn.Ý nghĩa của bảng là thể hiện mức độ phản ứng của người tham gia khảo sát tại các mục trên bảng cấu hỏi với các chủ đề phân tích khác nhau.

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

library("HDclassif")
## Warning: package 'HDclassif' was built under R version 4.2.3
## Loading required package: MASS
## Warning: package 'MASS' was built under R version 4.2.3
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
data("wine")
dat <- wine
dat <- na.omit(dat)

3.1 Trích lọc dữ liệu

ca <- dat[dat$class == 3,]
table(dat$class)
## 
##  1  2  3 
## 59 71 48
table(dat$class)/178*100
## 
##        1        2        3 
## 33.14607 39.88764 26.96629

Sau khi thao tác bộ dữ liệu này để có bảng tần suất thì ta chia cho tổng số quan sát và kết quả nhận thấy:

  • Tên loại rượu nho thứ hai chiếm nhiều nhất là 71 loại chiếm khoảng 39,88%

  • Tên loại rượu thứ ba chiếm tỉ lệ thấp nhất đạt khoảng 29,97% với 48 loại.

Tỉ lệ phần trăm của các khoảng trong biến V3

prop.table(table(wine$V3))
## 
##        1.36         1.7        1.71        1.75        1.82        1.88 
## 0.005617978 0.011235955 0.005617978 0.005617978 0.005617978 0.005617978 
##         1.9        1.92        1.94        1.95        1.98        1.99 
## 0.005617978 0.016853933 0.005617978 0.005617978 0.016853933 0.005617978 
##           2        2.02        2.04         2.1        2.12        2.13 
## 0.011235955 0.005617978 0.005617978 0.022471910 0.016853933 0.005617978 
##        2.14        2.15        2.16        2.17        2.19         2.2 
## 0.011235955 0.005617978 0.005617978 0.016853933 0.011235955 0.028089888 
##        2.21        2.22        2.23        2.24        2.25        2.26 
## 0.016853933 0.005617978 0.011235955 0.011235955 0.011235955 0.016853933 
##        2.27        2.28        2.29         2.3        2.31        2.32 
## 0.016853933 0.039325843 0.011235955 0.039325843 0.011235955 0.033707865 
##        2.35        2.36        2.37        2.38        2.39         2.4 
## 0.016853933 0.033707865 0.005617978 0.028089888 0.011235955 0.022471910 
##        2.41        2.42        2.43        2.44        2.45        2.46 
## 0.011235955 0.016853933 0.005617978 0.005617978 0.016853933 0.016853933 
##        2.48         2.5        2.51        2.52        2.53        2.54 
## 0.028089888 0.022471910 0.011235955 0.005617978 0.005617978 0.011235955 
##        2.55        2.56        2.58        2.59         2.6        2.61 
## 0.005617978 0.011235955 0.011235955 0.005617978 0.016853933 0.016853933 
##        2.62        2.64        2.65        2.67        2.68        2.69 
## 0.022471910 0.016853933 0.011235955 0.011235955 0.011235955 0.005617978 
##         2.7        2.72        2.73        2.74        2.75        2.78 
## 0.033707865 0.011235955 0.005617978 0.011235955 0.005617978 0.005617978 
##         2.8        2.84        2.86        2.87        2.92        3.22 
## 0.005617978 0.005617978 0.005617978 0.005617978 0.005617978 0.005617978 
##        3.23 
## 0.005617978

3.2 Một số lệnh thao tác đặc trưng đo lường cơ bản

3.3 Tính trung bình(mean),độ lệch chuẩn(sd), quantile(phân vị) của biến

mean(wine$V5)
## [1] 99.74157
median(wine$V5)
## [1] 98
sd(wine$V5)
## [1] 14.28248
quantile(wine$V5, 0.95)
##   95% 
## 124.3

Sau đó tôi tạo biểu histogram của biên V5 để xem sự phân bổ dữ liệu của chúng

hist(wine$V5)

Rồi đến bước thực hiện phép tính tổng hợp dữ liệu của biến V5 theo bến class. Ý nghĩa cho biết:

  • Nồng độ cồn nếu phân loại theo tên rượu nho thứ nhất thì trung bình là 106.339% + Nồng độ cồn theo tên rượu nho thứ hai thì trung bình là 94.5493%

  • Nồng độ cồn theo tên rượu nho thứ ba thì trung bình là 99.3125%

aggregate(V5 ~ class, wine, FUN=mean)
##   class       V5
## 1     1 106.3390
## 2     2  94.5493
## 3     3  99.3125
library(tidyverse)



c <- dat$V1
c1 <- c[13.05:14.83]
c2 <- c[11.46:12.88]
case1 <- data.frame(nongdo = c1, ruouthunhat="A")
case2 <- data.frame(nongdo= c2, ruouthuhai="B")

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

Sau đây tôi sẽ trình bày về bộ dataset mà tôi chọn làm để phân tích nó. Tên dataset: wine, data này nằm trong package HDclassif. Bộ dữ liệu là được lấy từ kết quả phân tích hóa học của các loại rượu vang được trồng ở cùng một vùng ở Ý nhưng có nguồn gốc từ ba giống cây trồng khác nhau. Đầu tiên tôi muốn dùng dữ liệu wine tôi phải gọi package HDclassif lên

library("HDclassif")
data("wine")
str("HDclassif")
##  chr "HDclassif"

4.1 Mô tả dữ liệu

Đây là dữ liệu về 3 loại rượu (Barbera, Barolo và Grignolino) ở vùng Piedmont, Ý, gồm:

  • 14 biến (variables)
  • 178 quan sát (observations)

Rượu Barolo được làm từ nho Nebbiolo, hai loại rượu còn lại được làm từ loại nho có cùng tên với chúng.

head(wine) 
##   class    V1   V2   V3   V4  V5   V6   V7   V8   V9  V10  V11  V12  V13
## 1     1 14.23 1.71 2.43 15.6 127 2.80 3.06 0.28 2.29 5.64 1.04 3.92 1065
## 2     1 13.20 1.78 2.14 11.2 100 2.65 2.76 0.26 1.28 4.38 1.05 3.40 1050
## 3     1 13.16 2.36 2.67 18.6 101 2.80 3.24 0.30 2.81 5.68 1.03 3.17 1185
## 4     1 14.37 1.95 2.50 16.8 113 3.85 3.49 0.24 2.18 7.80 0.86 3.45 1480
## 5     1 13.24 2.59 2.87 21.0 118 2.80 2.69 0.39 1.82 4.32 1.04 2.93  735
## 6     1 14.20 1.76 2.45 15.2 112 3.27 3.39 0.34 1.97 6.75 1.05 2.85 1450

4.2 Trình bày 10 hàng đầu của data.frame wines

names(wine)
##  [1] "class" "V1"    "V2"    "V3"    "V4"    "V5"    "V6"    "V7"    "V8"   
## [10] "V9"    "V10"   "V11"   "V12"   "V13"
data(wine)

4.3 Cho biết tên các biến trong data.frame wines

Trong 14 biến:

  • Biến \(vintages\) là biến nhãn cho biết tên loại rượu của từng quan trắc tương ứng.

  • Ngoại trừ các biến \(col..int\), \(col..hue\), \(OD.ratio\), các biến còn lại đều là các biến mô tả nồng độ (concentration). \(col..int\) = color intensity, \(col..hue\) = color hue và \(OD.ration\) = tỷ số giữa sự hấp thụ (absorbance) tại các bước sóng \(280\)\(315\) nm.

Thống kê số lượng 3 loại rượu trong mẫu:

table(wine$vintage)
## < table of extent 0 >

4.4 Thống kê mô tả

Trước tiên, ta tạo một data.frame mới gồm 13 cột đầu tiên của data.frame wine (gồm các biến định lượng) để thực hiện thống kê mô tả (biến thứ 14 là vintages là biến định tính):

dat_wine <- wine[ , 1:13]

Tính trung bình mẫu của các biến:

apply(dat_wine, 2, mean) 
##      class         V1         V2         V3         V4         V5         V6 
##  1.9382022 13.0006180  2.3363483  2.3665169 19.4949438 99.7415730  2.2951124 
##         V7         V8         V9        V10        V11        V12 
##  2.0292697  0.3618539  1.5908989  5.0580899  0.9574494  2.6116854

Tính phương sai mẫu của các biến:

apply(dat_wine, 2, var)
##        class           V1           V2           V3           V4           V5 
##   0.60067924   0.65906233   1.24801540   0.07526464  11.15268616 203.98933536 
##           V6           V7           V8           V9          V10          V11 
##   0.39168954   0.99771867   0.01548863   0.32759467   5.37444938   0.05224496 
##          V12 
##   0.50408641
apply(dat_wine, 2, range)
##      class    V1   V2   V3   V4  V5   V6   V7   V8   V9   V10  V11  V12
## [1,]     1 11.03 0.74 1.36 10.6  70 0.98 0.34 0.13 0.41  1.28 0.48 1.27
## [2,]     3 14.83 5.80 3.23 30.0 162 3.88 5.08 0.66 3.58 13.00 1.71 4.00

Tính ma trận hiệp phương sai (covariance matrix) và ma trận hệ số tương quan (correlation matrix):

cov_wine <- cov(dat_wine) 
# Ma trận hiệp phương sai tính từ dữ liệu chưa chuẩn hóa 
cov_wine
##             class          V1          V2            V3         V4          V5
## class  0.60067924 -0.20651527  0.37903860 -0.0105554498  1.3403637  -2.3154955
## V1    -0.20651527  0.65906233  0.08561131  0.0471151590 -0.8410929   3.1398781
## V2     0.37903860  0.08561131  1.24801540  0.0502770393  1.0763317  -0.8707795
## V3    -0.01055545  0.04711516  0.05027704  0.0752646353  0.4062083   1.1229366
## V4     1.34036374 -0.84109290  1.07633171  0.4062082778 11.1526862  -3.9747604
## V5    -2.31549546  3.13987812 -0.87077953  1.1229365835 -3.9747604 203.9893354
## V6    -0.34883483  0.14688722 -0.23433772  0.0221455913 -0.6711491   1.9164699
## V7    -0.65609059  0.19203322 -0.45863037  0.0315347299 -1.1720828   2.7930870
## V8     0.04717736 -0.01575426  0.04073336  0.0063584714  0.1504219  -0.4555634
## V9    -0.22141306  0.06351752 -0.14114698  0.0015155780 -0.3771762   1.9328325
## V10    0.47733891  1.02828254  0.64483818  0.1646543266  0.1450242   6.6205206
## V11   -0.10936755 -0.01331344 -0.14332564 -0.0046821545 -0.2091181   0.1808513
## V12   -0.43373707  0.04169782 -0.29244748  0.0007618358 -0.6562344   0.6693081
##                V6          V7           V8           V9         V10
## class -0.34883483 -0.65609059  0.047177363 -0.221413064  0.47733891
## V1     0.14688722  0.19203322 -0.015754260  0.063517520  1.02828254
## V2    -0.23433772 -0.45863037  0.040733362 -0.141146982  0.64483818
## V3     0.02214559  0.03153473  0.006358471  0.001515578  0.16465433
## V4    -0.67114915 -1.17208281  0.150421856 -0.377176220  0.14502419
## V5     1.91646988  2.79308703 -0.455563385  1.932832476  6.62052061
## V6     0.39168954  0.54047042 -0.035045125  0.219373345 -0.07999752
## V7     0.54047042  0.99771867 -0.066867000  0.373147553 -0.39916863
## V8    -0.03504512 -0.06686700  0.015488634 -0.026059868  0.04012051
## V9     0.21937334  0.37314755 -0.026059868  0.327594668 -0.03350392
## V10   -0.07999752 -0.39916863  0.040120510 -0.033503918  5.37444938
## V11    0.06203888  0.12408197 -0.007471177  0.038664565 -0.27650580
## V12    0.31102128  0.55826225 -0.044469244  0.210932940 -0.70581258
##                V11           V12
## class -0.109367549 -0.4337370660
## V1    -0.013313443  0.0416978226
## V2    -0.143325638 -0.2924474830
## V3    -0.004682155  0.0007618358
## V4    -0.209118054 -0.6562343681
## V5     0.180851266  0.6693080683
## V6     0.062038876  0.3110212785
## V7     0.124081969  0.5582622548
## V8    -0.007471177 -0.0444692440
## V9     0.038664565  0.2109329398
## V10   -0.276505801 -0.7058125762
## V11    0.052244961  0.0917662439
## V12    0.091766244  0.5040864089
corr_wine <- cor(dat_wine) 
corr_wine
##             class          V1          V2           V3          V4          V5
## class  1.00000000 -0.32822194  0.43777620 -0.049643221  0.51785911 -0.20917939
## V1    -0.32822194  1.00000000  0.09439694  0.211544596 -0.31023514  0.27079823
## V2     0.43777620  0.09439694  1.00000000  0.164045470  0.28850040 -0.05457510
## V3    -0.04964322  0.21154460  0.16404547  1.000000000  0.44336719  0.28658669
## V4     0.51785911 -0.31023514  0.28850040  0.443367187  1.00000000 -0.08333309
## V5    -0.20917939  0.27079823 -0.05457510  0.286586691 -0.08333309  1.00000000
## V6    -0.71916334  0.28910112 -0.33516700  0.128979538 -0.32111332  0.21440123
## V7    -0.84749754  0.23681493 -0.41100659  0.115077279 -0.35136986  0.19578377
## V8     0.48910916 -0.15592947  0.29297713  0.186230446  0.36192172 -0.25629405
## V9    -0.49912982  0.13669791 -0.22074619  0.009651935 -0.19732684  0.23644061
## V10    0.26566757  0.54636420  0.24898534  0.258887259  0.01873198  0.19995001
## V11   -0.61736921 -0.07174720 -0.56129569 -0.074666889 -0.27395522  0.05539820
## V12   -0.78822959  0.07234319 -0.36871043  0.003911231 -0.27676855  0.06600394
##                V6         V7         V8           V9         V10         V11
## class -0.71916334 -0.8474975  0.4891092 -0.499129824  0.26566757 -0.61736921
## V1     0.28910112  0.2368149 -0.1559295  0.136697912  0.54636420 -0.07174720
## V2    -0.33516700 -0.4110066  0.2929771 -0.220746187  0.24898534 -0.56129569
## V3     0.12897954  0.1150773  0.1862304  0.009651935  0.25888726 -0.07466689
## V4    -0.32111332 -0.3513699  0.3619217 -0.197326836  0.01873198 -0.27395522
## V5     0.21440123  0.1957838 -0.2562940  0.236440610  0.19995001  0.05539820
## V6     1.00000000  0.8645635 -0.4499353  0.612413084 -0.05513642  0.43368134
## V7     0.86456350  1.0000000 -0.5378996  0.652691769 -0.17237940  0.54347857
## V8    -0.44993530 -0.5378996  1.0000000 -0.365845099  0.13905701 -0.26263963
## V9     0.61241308  0.6526918 -0.3658451  1.000000000 -0.02524993  0.29554425
## V10   -0.05513642 -0.1723794  0.1390570 -0.025249931  1.00000000 -0.52181319
## V11    0.43368134  0.5434786 -0.2626396  0.295544253 -0.52181319  1.00000000
## V12    0.69994936  0.7871939 -0.5032696  0.519067096 -0.42881494  0.56546829
##                V12
## class -0.788229589
## V1     0.072343187
## V2    -0.368710428
## V3     0.003911231
## V4    -0.276768549
## V5     0.066003936
## V6     0.699949365
## V7     0.787193902
## V8    -0.503269596
## V9     0.519067096
## V10   -0.428814942
## V11    0.565468293
## V12    1.000000000

Phần tiếp theo, tôi dùng lệnh str để xem cấu trúc của bộ dữ liệu

Kết quả cung cấp cho ta thông tin về số lượng quan sát, số biến và tên của các biến, loại dữ liệu của từng biến

str(wine)
## 'data.frame':    178 obs. of  14 variables:
##  $ class: int  1 1 1 1 1 1 1 1 1 1 ...
##  $ V1   : num  14.2 13.2 13.2 14.4 13.2 ...
##  $ V2   : num  1.71 1.78 2.36 1.95 2.59 1.76 1.87 2.15 1.64 1.35 ...
##  $ V3   : num  2.43 2.14 2.67 2.5 2.87 2.45 2.45 2.61 2.17 2.27 ...
##  $ V4   : num  15.6 11.2 18.6 16.8 21 15.2 14.6 17.6 14 16 ...
##  $ V5   : int  127 100 101 113 118 112 96 121 97 98 ...
##  $ V6   : num  2.8 2.65 2.8 3.85 2.8 3.27 2.5 2.6 2.8 2.98 ...
##  $ V7   : num  3.06 2.76 3.24 3.49 2.69 3.39 2.52 2.51 2.98 3.15 ...
##  $ V8   : num  0.28 0.26 0.3 0.24 0.39 0.34 0.3 0.31 0.29 0.22 ...
##  $ V9   : num  2.29 1.28 2.81 2.18 1.82 1.97 1.98 1.25 1.98 1.85 ...
##  $ V10  : num  5.64 4.38 5.68 7.8 4.32 6.75 5.25 5.05 5.2 7.22 ...
##  $ V11  : num  1.04 1.05 1.03 0.86 1.04 1.05 1.02 1.06 1.08 1.01 ...
##  $ V12  : num  3.92 3.4 3.17 3.45 2.93 2.85 3.58 3.58 2.85 3.55 ...
##  $ V13  : int  1065 1050 1185 1480 735 1450 1290 1295 1045 1045 ...

Kế đến tôi dùng lệnh summary để tạo ra phần tóm tắt các thông tin thống kê mô tả của các biến. Kết quả dưới đây cho ta biết về trung bình, min, max, trung vị, các tứ phân vị của các biến. Ta có thể hiểu được việc này nó mô tả như nào dựa vào kết quả dưới đây. Chẳng hạn một ví dụ cụ thể về biến bất kì, ta lấy biến V10 để ví dụ rằng nhìn vào biến V10(tỷ số sự hấp thụ) thấy được rằng độ hấp thụ lớn nhất là 13%, bé nhất là 1,28%, trung bình sự hấp thụ của các loại rượu này dao động khoảng 5,058%, tứ phân vị thứ nhất biểu diễn con số 3,22%, trung vị thì lại cho thấy tỉ số hấp thụ là 4,69 và tứ phân vị thứ ba lại cho kết quả hấp thụ với tỷ số là 6,2

summary(wine)
##      class             V1              V2              V3       
##  Min.   :1.000   Min.   :11.03   Min.   :0.740   Min.   :1.360  
##  1st Qu.:1.000   1st Qu.:12.36   1st Qu.:1.603   1st Qu.:2.210  
##  Median :2.000   Median :13.05   Median :1.865   Median :2.360  
##  Mean   :1.938   Mean   :13.00   Mean   :2.336   Mean   :2.367  
##  3rd Qu.:3.000   3rd Qu.:13.68   3rd Qu.:3.083   3rd Qu.:2.558  
##  Max.   :3.000   Max.   :14.83   Max.   :5.800   Max.   :3.230  
##        V4              V5               V6              V7       
##  Min.   :10.60   Min.   : 70.00   Min.   :0.980   Min.   :0.340  
##  1st Qu.:17.20   1st Qu.: 88.00   1st Qu.:1.742   1st Qu.:1.205  
##  Median :19.50   Median : 98.00   Median :2.355   Median :2.135  
##  Mean   :19.49   Mean   : 99.74   Mean   :2.295   Mean   :2.029  
##  3rd Qu.:21.50   3rd Qu.:107.00   3rd Qu.:2.800   3rd Qu.:2.875  
##  Max.   :30.00   Max.   :162.00   Max.   :3.880   Max.   :5.080  
##        V8               V9             V10              V11        
##  Min.   :0.1300   Min.   :0.410   Min.   : 1.280   Min.   :0.4800  
##  1st Qu.:0.2700   1st Qu.:1.250   1st Qu.: 3.220   1st Qu.:0.7825  
##  Median :0.3400   Median :1.555   Median : 4.690   Median :0.9650  
##  Mean   :0.3619   Mean   :1.591   Mean   : 5.058   Mean   :0.9574  
##  3rd Qu.:0.4375   3rd Qu.:1.950   3rd Qu.: 6.200   3rd Qu.:1.1200  
##  Max.   :0.6600   Max.   :3.580   Max.   :13.000   Max.   :1.7100  
##       V12             V13        
##  Min.   :1.270   Min.   : 278.0  
##  1st Qu.:1.938   1st Qu.: 500.5  
##  Median :2.780   Median : 673.5  
##  Mean   :2.612   Mean   : 746.9  
##  3rd Qu.:3.170   3rd Qu.: 985.0  
##  Max.   :4.000   Max.   :1680.0

Kế đó ta sẽ sử dụng lệnh head để xem các quan sát đầu của dat và lệnh tail để xem một vài quan sát cuối

head(wine)
##   class    V1   V2   V3   V4  V5   V6   V7   V8   V9  V10  V11  V12  V13
## 1     1 14.23 1.71 2.43 15.6 127 2.80 3.06 0.28 2.29 5.64 1.04 3.92 1065
## 2     1 13.20 1.78 2.14 11.2 100 2.65 2.76 0.26 1.28 4.38 1.05 3.40 1050
## 3     1 13.16 2.36 2.67 18.6 101 2.80 3.24 0.30 2.81 5.68 1.03 3.17 1185
## 4     1 14.37 1.95 2.50 16.8 113 3.85 3.49 0.24 2.18 7.80 0.86 3.45 1480
## 5     1 13.24 2.59 2.87 21.0 118 2.80 2.69 0.39 1.82 4.32 1.04 2.93  735
## 6     1 14.20 1.76 2.45 15.2 112 3.27 3.39 0.34 1.97 6.75 1.05 2.85 1450
tail(wine)
##     class    V1   V2   V3   V4  V5   V6   V7   V8   V9  V10  V11  V12 V13
## 173     3 14.16 2.51 2.48 20.0  91 1.68 0.70 0.44 1.24  9.7 0.62 1.71 660
## 174     3 13.71 5.65 2.45 20.5  95 1.68 0.61 0.52 1.06  7.7 0.64 1.74 740
## 175     3 13.40 3.91 2.48 23.0 102 1.80 0.75 0.43 1.41  7.3 0.70 1.56 750
## 176     3 13.27 4.28 2.26 20.0 120 1.59 0.69 0.43 1.35 10.2 0.59 1.56 835
## 177     3 13.17 2.59 2.37 20.0 120 1.65 0.68 0.53 1.46  9.3 0.60 1.62 840
## 178     3 14.13 4.10 2.74 24.5  96 2.05 0.76 0.56 1.35  9.2 0.61 1.60 560

4.5 Gán tên mới là p cho object wine

p <- wine

4.6 Phân tổ dữ liệu

pt <- cut(p$V1,4)
table(pt)
## pt
##     (11,12]   (12,12.9] (12.9,13.9] (13.9,14.8] 
##          19          65          68          26

Từ kết quả trên ta thấy được, biến V1(nồng độ) cho 3 loại rượu đã được phân tổ làm 4 tổ có khoảng cách đều nhau, cụ thể hơn là:

  • Nồng độ từ 11 đến 12 có 19 giá trị

  • Nồng độ từ 12 đến 12.9 có 65 giá trị

  • Nồng độ từ 12.9 đến 13.9 có 68 giá trị

  • Nồng độ từ 13.9 đến 14.8 có 26 giá trị

4.7 Lấy những đối tượng có nồng độ cồn có các giá trị lớn hơn là 12.5.

p1 <- p$V1
p2 <- p1[p1>12.5]
table(p2)
## p2
## 12.51 12.52 12.53 12.58  12.6 12.64 12.67 12.69  12.7 12.72 12.77 12.79 12.81 
##     2     1     1     1     2     1     1     1     2     2     2     1     1 
## 12.82 12.84 12.85 12.86 12.87 12.88 12.93 12.96 12.99 13.03 13.05 13.07 13.08 
##     1     1     2     1     1     1     2     1     1     1     6     1     1 
## 13.11 13.16 13.17  13.2 13.23 13.24 13.27 13.28 13.29  13.3 13.32 13.34 13.36 
##     2     2     2     1     1     2     1     1     1     1     1     1     1 
## 13.39  13.4 13.41 13.45 13.48 13.49  13.5 13.51 13.52 13.56 13.58 13.62 13.63 
##     1     2     1     1     2     2     2     1     1     2     2     1     1 
## 13.64 13.67 13.68 13.69 13.71 13.72 13.73 13.74 13.75 13.76 13.77 13.78 13.82 
##     1     1     1     1     2     1     2     1     1     1     1     1     1 
## 13.83 13.84 13.86 13.87 13.88  13.9 13.94 14.02 14.06  14.1 14.12 14.13 14.16 
##     2     1     2     1     2     1     1     1     2     2     1     1     1 
## 14.19  14.2 14.21 14.22 14.23  14.3 14.34 14.37 14.38 14.39 14.75 14.83 
##     1     1     1     2     1     1     1     1     2     1     1     1