họ và tên : Nguyễn Anh Duy

Mssv 2121012870

1 Tuần 5 11/07/2023- 17/7/2023

1.1 WebScrape

Trong việc thống kê thì cần phải có dữ liệu và đôi lúc các dữ liệu không có sẵn mà ta phải tự tìm kiếm, tuy nhiên việc tìm kiếm cũng không phải dễ dàng các dữ liệu có trên các trang website thường không có sẵn để chúng ta tải về từ đó cụm từ webscrape dược ra đời nhầm phục vụ cho mục đích là lấy dữ liệu từ các trang website hay dịch thành tiếng việt còn gọi là cào dữ liệu

Để cào được dữ liệu thì cần phải sử dụng package rvest tiếp theo em sẽ cào dữ liệu tại trang “WWW.imdb.com” về những bộ phim phiêu lưu được bình chọn cao nhất

library(rvest)
## Warning: package 'rvest' was built under R version 4.2.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(DT)
## Warning: package 'DT' was built under R version 4.2.3
movies = data.frame()

for (page_result in seq(from = 1, to = 51, by = 50)) {
  link = paste0("https://www.imdb.com/search/title/?title_type=feature&num_votes=25000,&genres=adventure&sort=user_rating,desc&start=", 
                page_result, "&ref_=adv_nxt")
  page = read_html(link)
  
  name = page %>% html_nodes(".lister-item-header a") %>% html_text()
  movie_links = page %>% html_nodes(".lister-item-header a") %>%
    html_attr("href") %>% paste("https://www.imdb.com", ., sep="")
  year = page %>% html_nodes(".text-muted.unbold") %>% html_text()
  rating = page %>% html_nodes(".ratings-imdb-rating strong") %>% html_text()
  synopsis = page %>% html_nodes(".ratings-bar+ .text-muted") %>% html_text()
  time = page %>%html_nodes(".runtime") %>% html_text()

  
  movies = rbind(movies, data.frame(name, year,time, rating, synopsis, stringsAsFactors = FALSE))
  
  print(paste("Page:", page_result))  
}
## [1] "Page: 1"
## [1] "Page: 51"
datatable(movies)

1.2 Function

ở đây e sẽ tạo ra mọt function giúp cho tính min và max sau đó vẽ ra 2 biểu đồ cột và tròn

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
maxmin_and_plot <- function(data) {
  # Tính giá trị tối đa và tối thiểu
  max_value <- max(data)
  min_value <- min(data)
  
  # Chuẩn bị dữ liệu cho biểu đồ cột
  bar_data <- data.frame(Value = c(max_value, min_value),
                         Category = c("Max", "Min"))
  
  # Chuẩn bị dữ liệu cho biểu đồ tròn
  pie_data <- data.frame(Value = c(max_value, min_value),
                         Category = c("Max", "Min"))
  
  # Vẽ biểu đồ cột
  bar_plot <- ggplot(bar_data, aes(x = Category, y = Value)) +
    geom_bar(stat = "identity", fill = "steelblue") +
    labs(x = "Category", y = "Value", title = "Max and Min Values") +
    theme_minimal()
  
  # Vẽ biểu đồ tròn
  pie_plot <- ggplot(pie_data, aes(x = "", y = Value, fill = Category)) +
    geom_bar(stat = "identity", width = 1) +
    coord_polar("y", start = 0) +
    labs(x = NULL, y = NULL, fill = NULL) +
    theme_minimal()
  
  # Hiển thị biểu đồ
  print(bar_plot)
  print(pie_plot)
}
calculate_and_plot(mtcars$mpg)
## Error in calculate_and_plot(mtcars$mpg): could not find function "calculate_and_plot"

1.3 Inđicators

trong bài này e sẽ tìm hiểu về các indicator về thương mại (trade)

library(WDI)
## Warning: package 'WDI' was built under R version 4.2.3
te <- WDIsearch("trade")
datatable(te)
tradetr <- WDI(indicator = "BG.GSR.NFSV.GD.ZS")
tradtr <- na.omit(tradetr)
datatable(tradtr)

indndicator “BG.GSR.NFSV.GD.ZS” trong cơ sở dữ liệu WDI (World Development Indicators) đại diện cho “Trade in Services (% of GDP)” hoặc “Thương mại Dịch vụ (% GDP)”.

chỉ số này đo lường giá trị thương mại dịch vụ (bao gồm cả xuất khẩu và nhập khẩu dịch vụ) so với tổng sản phẩm quốc nội (GDP) của một quốc gia trong một năm cụ thể. Nó cho biết tỷ lệ mà các dịch vụ thương mại đóng góp vào GDP của quốc gia đó.

travn <- WDI(indicator = "BG.GSR.NFSV.GD.ZS",country ="VN")
travn <- na.omit(travn)
head(travn)
##   country iso2c iso3c year BG.GSR.NFSV.GD.ZS
## 2 Vietnam    VN   VNM 2021          6.303641
## 3 Vietnam    VN   VNM 2020          7.353099
## 4 Vietnam    VN   VNM 2019         10.654516
## 5 Vietnam    VN   VNM 2018         10.725510
## 6 Vietnam    VN   VNM 2017         10.723160
## 7 Vietnam    VN   VNM 2016         11.380185
ggplot(travn, aes(x = year, y = BG.GSR.NFSV.GD.ZS)) + geom_line(color = "red") +
  xlab("Year") 

ngoài ra ta có thể tìm thấy chỉ thương mại dịch vụ của Việt Nam và nhìn vào biểu đồ ta có thể thấy được rằng giá trị thường mại dịch vụ không còn là trọng yếu trong việc phát triển GDP ở nước ta nữa

trade2 <- WDI(indicator = "BN.GSR.GNFS.CD")
head(trade2)
##                       country iso2c iso3c year BN.GSR.GNFS.CD
## 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

Indicator “BN.GSR.GNFS.CD” trong cơ sở dữ liệu WDI (World Development Indicators) đại diện cho “Exports of Goods and Services (current US$)” hoặc “Xuất khẩu Hàng hóa và Dịch vụ (USD hiện tại)”. Chỉ số này đo lường giá trị xuất khẩu hàng hóa và dịch vụ của một quốc gia trong một năm cụ thể, được tính bằng đơn vị đồng USD hiện tại.

Chỉ số “Exports of Goods and Services (current US$)” cho thấy giá trị tổng cộng của hàng hóa và dịch vụ được xuất khẩu từ một quốc gia trong một khoảng thời gian cụ thể. Nó bao gồm các loại hàng hóa và dịch vụ khác nhau như hàng hóa công nghiệp, hàng hóa nông nghiệp, dịch vụ tài chính, dịch vụ du lịch, dịch vụ công nghệ thông tin, v.v.

trade2vn <- WDI(indicator = "BN.GSR.GNFS.CD",country = "VN")
trade2vn <- na.omit(trade2vn)
datatable(trade2vn)
trade2vn |> ggplot(aes(x = year,y =BN.GSR.GNFS.CD))+ geom_line()

theo biểu đồ trên thì ở việt nam (xuất khẩu và dịch vụ đã tăng) và hieẹn tại đang có dấu hiệu giảm dần

trade3 <- WDI(indicator = "CC.ENV.TRAD.IM",country = c("US","VN","JP","TH"),start = 2000)
trade3 <- na.omit(trade3)
datatable(trade3)

Indicator “CC.ENV.TRAD.IM” là đại diện cho “CO2 emissions from transport (% of total fuel combustion)” hoặc “Khí thải CO2 từ giao thông (% tổng lượng đốt nhiên liệu)”.Chỉ số này đo lường tỷ lệ khí thải CO2 từ hoạt động giao thông (bao gồm xe cộ, tàu biển, máy bay, v.v.) so với tổng lượng đốt nhiên liệu của một quốc gia trong một khoảng thời gian cụ thể

Nếu chỉ số “CO2 emissions from transport (% of total fuel combustion)” (tỷ lệ khí thải CO2 từ giao thông so với tổng lượng đốt nhiên liệu) cao, điều này cho thấy rằng hoạt động giao thông đóng góp một phần lớn vào khí thải CO2 và tiềm năng ô nhiễm môi trường và biến đổi khí hậu.

ở dây dữ liệu chỉ lấy từ năm 2000 và các quốc gia cụ thể như mĩ,nhật bản, thái lan và Việt Nam

trade4 <- WDI(indicator = "CM.MKT.TRAD.CD", country = c("US","VN","JP","RU","KR","FR","AU"))
trade4 <- na.omit(trade4)
datatable(trade4)
trade4 |> ggplot(aes(x = year, y =CM.MKT.TRAD.CD,color = country)) +geom_line()+ theme()

Indicator “CM.MKT.TRAD.CD” này đại diện cho “Merchandise Trade (current US$)” hoặc “Thương mại Hàng hóa (USD hiện tại)”. Chỉ số này đo lường giá trị tổng cộng của hàng hóa được xuất khẩu và nhập khẩu của một quốc gia trong một khoảng thời gian cụ thể, được tính bằng đơn vị đồng USD hiện tại.

Chỉ số “Merchandise Trade (current US$)” cho thấy giá trị tổng cộng của hàng hóa được thương mại (bao gồm cả xuất khẩu và nhập khẩu) từ một quốc gia trong một khoảng thời gian cụ thể. Nó bao gồm các loại hàng hóa khác nhau như hàng hóa công nghiệp, hàng hóa nông nghiệp, vật liệu xây dựng, sản phẩm điện tử, ô tô, v.v.

trade5 <- WDI(indicator = "CM.MKT.TRAD.GD.ZS",start = 2002, country = c("US","VN","JP","RU","KR","FR","AU","TH"))
datatable(trade5)
trade6 <- WDI(indicator = "CM.MKT.TRNR")
trade6 <- na.omit(trade6)
datatable(trade6)

chỉ số này đại diện cho “Merchandise Trade Balance (current US\()" hoặc "Số dư thương mại hàng hóa (USD hiện tại)". Chỉ số "Merchandise Trade Balance (current US\))” cho thấy sự chênh lệch giữa giá trị tổng cộng của hàng hóa xuất khẩu và giá trị tổng cộng của hàng hóa nhập khẩu từ một quốc gia. Khi giá trị xuất khẩu vượt quá giá trị nhập khẩu, số dư thương mại sẽ là dương, cho thấy quốc gia đó có số dư thương mại dương (thặng dư thương mại). Ngược lại, khi giá trị nhập khẩu vượt quá giá trị xuất khẩu, số dư thương mại sẽ là âm, cho thấy quốc gia đó có số dư thương mại âm (thâm hụt thương mại).

trade7 <- WDI(indicator = "DAK.TRAD.CR")
trade7 <- na.omit(trade7)
datatable(trade7)

Chỉ số này đo lường sự chênh lệch giữa thu nhập và chi tiêu của một quốc gia trong một khoảng thời gian cụ thể, được tính bằng đơn vị đồng USD hiện tại.

Chỉ số “Current Account Balance (BoP, current US$)” cho thấy sự chênh lệch giữa tổng thu nhập và tổng chi tiêu của một quốc gia trong nền kinh tế quốc gia. Nó bao gồm các thành phần như xuất khẩu hàng hóa và dịch vụ, nhập khẩu hàng hóa và dịch vụ, chuyển tiền và dòng vốn. Số dư thương mại hiện tại có thể dương (thặng dư) hoặc âm (thâm hụt), tùy thuộc vào tổng giá trị của các thành phần.

trade8 <- WDI(indicator = "DT.AMT.DLTT.CD.CB.AR.03.US")
trade8 <- na.omit(trade8)
datatable(trade8)

Indicator “DT.AMT.DLTT.CD.CB.AR.03.US” đại diện cho “Long-term External Debt (DOD, current US$)” hoặc “Nợ ngoại dài hạn (DOD, USD hiện tại)”.

Chỉ số này đo lường giá trị tổng cộng của nợ ngoại dài hạn của một quốc gia, được tính bằng đơn vị đồng USD hiện tại.

Chỉ số “Long-term External Debt (DOD, current US$)” cho thấy số tiền mà một quốc gia nợ lại từ các nước ngoại quốc hoặc tổ chức tài chính khác trong một khoảng thời gian dài (thường là hơn một năm). Đây là khoản nợ mà quốc gia phải trả trong tương lai, thông thường bằng tiền mặt hoặc tài sản.

trade9 <- WDI(indicator = "TM.GATS.XD")
trade9 <- na.omit(trade9)
datatable(trade9)

Indicator “TM.GATS.XD” trong cơ sở dữ liệu WDI (World Development Indicators) đại diện cho “Trade in Services, Commercial Presence (current US$)” hoặc “Thương mại Dịch vụ, Hiện diện Thương mại (USD hiện tại)”.

Chỉ số này đo lường giá trị tổng cộng của thương mại dịch vụ liên quan đến hiện diện thương mại của một quốc gia trong một khoảng thời gian cụ thể, được tính bằng đơn vị đồng USD hiện tại.

Chỉ số “Trade in Services, Commercial Presence (current US$)” cho thấy giá trị tổng cộng của thương mại dịch vụ liên quan đến hiện diện thương mại của một quốc gia. Hiện diện thương mại bao gồm các hoạt động kinh doanh và đầu tư trực tiếp nước ngoài (FDI) trong lĩnh vực dịch vụ, chẳng hạn như tài chính, bất động sản, dịch vụ công nghệ thông tin, du lịch, v.v.

trade10 <- WDI(indicator = "TM.GATS.XD")
trade10 <- na.omit(trade10)
datatable(trade10)

Indicator “TM.GATS.XD” trong cơ sở dữ liệu WDI (World Development Indicators) đại diện cho “Trade in Services, Commercial Presence (current US$)” hoặc “Thương mại Dịch vụ, Hiện diện Thương mại (USD hiện tại)”.

Chỉ số này đo lường giá trị tổng cộng của thương mại dịch vụ liên quan đến hiện diện thương mại của một quốc gia trong một khoảng thời gian cụ thể, được tính bằng đơn vị đồng USD hiện tại.

Chỉ số “Trade in Services, Commercial Presence (current US$)” cho thấy giá trị tổng cộng của thương mại dịch vụ liên quan đến hiện diện thương mại của một quốc gia. Hiện diện thương mại bao gồm các hoạt động kinh doanh và đầu tư trực tiếp nước ngoài (FDI) trong lĩnh vực dịch vụ, chẳng hạn như tài chính, bất động sản, dịch vụ công nghệ thông tin, du lịch, v.v.

2 Tuần 4 bài tập

2.1 kiểm tra và thao tác trên dữ liệu

2.1.1 gọi data và tìm hiểu cơ bản về data

library(ggplot2)
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.2.3
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'tidyr' was built under R version 4.2.3
## Warning: package 'readr' was built under R version 4.2.3
## Warning: package 'purrr' was built under R version 4.2.3
## Warning: package 'forcats' was built under R version 4.2.3
## Warning: package 'lubridate' was built under R version 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.1     ✔ tidyr     1.3.0
## ✔ readr     2.1.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter()         masks stats::filter()
## ✖ readr::guess_encoding() masks rvest::guess_encoding()
## ✖ dplyr::lag()            masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(dplyr)
library(DT)
data(mtcars)
datatable(mtcars)
mt <- mtcars

gán dataset mtcars vào biến mt

str(mt)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...

kiểm tra dữ liệu xem các biến trong data có bao nhiêu

names(mt) <- c("M","c","D","H","D","W","Q","V","A","G","CA")

lệnh năm dùng để dặ tên csac biến trong đó tên các biến tương ứng với chữ cái đầu như (mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,card) sẽ chuyển thành (M”,“c”,“D”,“H”,“D”,“W”,“Q”,“V”,“A”,“G”,“CA”)

head(mt)
##                      M c   D   H    D     W     Q V A G CA
## Mazda RX4         21.0 6 160 110 3.90 2.620 16.46 0 1 4  4
## Mazda RX4 Wag     21.0 6 160 110 3.90 2.875 17.02 0 1 4  4
## Datsun 710        22.8 4 108  93 3.85 2.320 18.61 1 1 4  1
## Hornet 4 Drive    21.4 6 258 110 3.08 3.215 19.44 1 0 3  1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3  2
## Valiant           18.1 6 225 105 2.76 3.460 20.22 1 0 3  1

lệnh head() dùng để xem 6 dữ liệu đầu của data

tail(mt)
##                   M c     D   H    D     W    Q V A G CA
## Porsche 914-2  26.0 4 120.3  91 4.43 2.140 16.7 0 1 5  2
## Lotus Europa   30.4 4  95.1 113 3.77 1.513 16.9 1 1 5  2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.5 0 1 5  4
## Ferrari Dino   19.7 6 145.0 175 3.62 2.770 15.5 0 1 5  6
## Maserati Bora  15.0 8 301.0 335 3.54 3.570 14.6 0 1 5  8
## Volvo 142E     21.4 4 121.0 109 4.11 2.780 18.6 1 1 4  2

ngước lại với head() thì tail() dùng để hiện 6 dòng cuối

summary(mt)
##        M               c               D               H        
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##        D               W               Q               V         
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        A                G               CA       
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000

lệnh summary dùng đẻ tóm tắt các thống kê cơ bản như mean (trung bình), median (trung vị), min (giá trị nhỏ nhất), max (giá trị lớn nhất) và quartiles (phân vị).

2.1.2 thao tác trên dữ liệu

mt[2,3]
## [1] 160

dùng dấu [] để chọn mọt phần tử trong data và ta cũng có thể chọn theo nhìu cách khác. như ví dụ trên thì ta chọn vị trí dòng 2 và ở cột 3

mt$M
##  [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4
## [16] 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7
## [31] 15.0 21.4
mt[,1]
##  [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4
## [16] 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7
## [31] 15.0 21.4

trên đây là hia cách trong nhiều cách mà ta có thể chọn một cột trong biến như trên là ta chọn cột dặm trên mỗi gallon

table(cut(mtcars$mpg,4),mtcars$cyl)
##              
##                4  6  8
##   (10.4,16.3]  0  0 10
##   (16.3,22.1]  2  7  4
##   (22.1,28]    5  0  0
##   (28,33.9]    4  0  0

ở dây em tạo bảng bằng dùng lệnh table và lệnh cut với việc tạo ra bảng dựa trên việc chia mpg thành 4 nhóm và sau đó phân tích biến cyl ở đây là số xylanh thành ta có thể ra được bảng như ví dụ

2.2 Tính toán với dữ liệu

2.2.1 tính toán các thông số thống kê

tiếp theo đây e sẽ tính toán các số liệu dựa trên data trên

range(mt$M)
## [1] 10.4 33.9

lệnh range cho phép tính toán min và max của một biến để biết đưiọc phạm vi của biến biến đó tuy nhiên ta có thể dùng các lệnh riêng lẻ khác

#tính min
min(mt$M)
## [1] 10.4
#tính max
max(mt$M)
## [1] 33.9

sau đây ta tính toán các hệ só nhuwtrung bình phương sai

mean(mt$D)
## [1] 230.7219
var(mt$D)
## [1] 15360.8

ở dây lệnh Varcho phép tính toán phương sai của biến disp chính là phương sai của dung tích xilanh các xe khác nhau và mean là trung bình của dung tích xylanh

quantile(mt$D)
##      0%     25%     50%     75%    100% 
##  71.100 120.825 196.300 326.000 472.000

ở dây ta có tứ phân vị của dung tích xylanh bằng quantle và ta có thể chọn tứ phân vị nào theo ý thích

library(dplyr)
mt_h <- mtcars %>% group_by(am)%>%
  summarize(maxH = max(hp),
            minH = min(hp))
mt_h
## # A tibble: 2 × 3
##      am  maxH  minH
##   <dbl> <dbl> <dbl>
## 1     0   245    62
## 2     1   335    52

ở đây em sử dụng toán tử pipe cùng với hàm group_by chọn ra các kiểu hộp số để lập ra bẳng min max theo mã lực và có kết quả là mã lực lớn nhất của số tự động là 245 thấp hơn so với gần 40% so với số tự động

2.2.2 tính toán ma trạn tương quan

Để tính toán được ma trận tương quan đầu tien cần bỏ đi những biến không phải là dịnh lượng như biến am(hộp số ),…

datamt <- mtcars[, c(1,3,4,5,6,7)]
head(datamt,6)
##                    mpg disp  hp drat    wt  qsec
## Mazda RX4         21.0  160 110 3.90 2.620 16.46
## Mazda RX4 Wag     21.0  160 110 3.90 2.875 17.02
## Datsun 710        22.8  108  93 3.85 2.320 18.61
## Hornet 4 Drive    21.4  258 110 3.08 3.215 19.44
## Hornet Sportabout 18.7  360 175 3.15 3.440 17.02
## Valiant           18.1  225 105 2.76 3.460 20.22

có thể thây chỉ còn những giá trị định lượng trong data tiếp theo em sẽ tạo ra bảng tương quan

tqmtcars <- cor(datamt)
tqmtcars
##             mpg       disp         hp        drat         wt        qsec
## mpg   1.0000000 -0.8475514 -0.7761684  0.68117191 -0.8676594  0.41868403
## disp -0.8475514  1.0000000  0.7909486 -0.71021393  0.8879799 -0.43369788
## hp   -0.7761684  0.7909486  1.0000000 -0.44875912  0.6587479 -0.70822339
## drat  0.6811719 -0.7102139 -0.4487591  1.00000000 -0.7124406  0.09120476
## wt   -0.8676594  0.8879799  0.6587479 -0.71244065  1.0000000 -0.17471588
## qsec  0.4186840 -0.4336979 -0.7082234  0.09120476 -0.1747159  1.00000000

Để tính toán thêm hệ số pvalue ta có thể dùng hàm rcorr và dùng như sau

library(Hmisc)
## Warning: package 'Hmisc' was built under R version 4.2.3
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:dplyr':
## 
##     src, summarize
## The following objects are masked from 'package:base':
## 
##     format.pval, units
tqmtcars2 <- rcorr(as.matrix(datamt))
tqmtcars2
##        mpg  disp    hp  drat    wt  qsec
## mpg   1.00 -0.85 -0.78  0.68 -0.87  0.42
## disp -0.85  1.00  0.79 -0.71  0.89 -0.43
## hp   -0.78  0.79  1.00 -0.45  0.66 -0.71
## drat  0.68 -0.71 -0.45  1.00 -0.71  0.09
## wt   -0.87  0.89  0.66 -0.71  1.00 -0.17
## qsec  0.42 -0.43 -0.71  0.09 -0.17  1.00
## 
## n= 32 
## 
## 
## P
##      mpg    disp   hp     drat   wt     qsec  
## mpg         0.0000 0.0000 0.0000 0.0000 0.0171
## disp 0.0000        0.0000 0.0000 0.0000 0.0131
## hp   0.0000 0.0000        0.0100 0.0000 0.0000
## drat 0.0000 0.0000 0.0100        0.0000 0.6196
## wt   0.0000 0.0000 0.0000 0.0000        0.3389
## qsec 0.0171 0.0131 0.0000 0.6196 0.3389

như có thể thấy lệnh rcorrkhông những đã tính ra hệ ss tương quan mà còn tính thêm cả số p_value tiện lợi hơn cả corr

nếu như đôi khi nhìn vào hệ số tương quá có quá nhiều số ta có thể biểu diễn nó với hình thwusc khác đẹp mắt hơn và sau đó e sẽ biểu diễn bằng 3 cách

library(corrplot)
## Warning: package 'corrplot' was built under R version 4.2.3
## corrplot 0.92 loaded
corrplot(tqmtcars, type = "upper", order = "hclust", 
         tl.col = "black", tl.srt = 45)

đây ta có thể tạo ra hệ sô tương quan dựa được hiển thị dựa trên màu sắc

library(PerformanceAnalytics)
## Warning: package 'PerformanceAnalytics' was built under R version 4.2.3
## Loading required package: xts
## Warning: package 'xts' was built under R version 4.2.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.2.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## ######################### Warning from 'xts' package ##########################
## #                                                                             #
## # The dplyr lag() function breaks how base R's lag() function is supposed to  #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or       #
## # source() into this session won't work correctly.                            #
## #                                                                             #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop           #
## # dplyr from breaking base R's lag() function.                                #
## #                                                                             #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning.  #
## #                                                                             #
## ###############################################################################
## 
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## 
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
## 
##     legend
chart.Correlation(tqmtcars, histogram=TRUE, pch=19)
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

col<- colorRampPalette(c("blue", "white", "red"))(20)
heatmap(x = tqmtcars, col = col, symm = TRUE)

3 Tuần 4

các tuần trước chúng ta đã học về cách làm sạch dữ liệu và sau đây chúng ta sẽ tìm hiểu thêm data visualiztion hay còn gọi là trực quan hóa dữ liệu. Điều này giúp chúng ta hình dung về dữ liệu một cách dễ dàng hơn và nhầm đưa ra thêm nhận xét đúng hơn về vấn đề cần phân tích. Sau đây chúng ta sẽ tìm hiểu các vấn đề các đồ thị có thể có thể vẽ trong package ggplot2 bằng fuction ggplot

3.1 biểu đồ cột

để có thể vê biểu đồ cột ta có thể dùng hai lệnh geom_ sau là geom_bar() hoặc geom_col() cách nào cũng được nên đẻ bắt đầu ta sẽ sử dụng dữ liệu lúc trước đó là airquality

library(ggplot2)
library(dplyr)
library(DT)
data("airquality")
datatable(airquality)
air <- airquality
air|> ggplot(aes(x = Temp)) + geom_bar(na.rm = T, fill = "blue")

đây là vẽ biểu đồ cột về nhiệt độ trong biến air tiếp theo đây chúng ta sẽ vẽ biểu đồ nhiệt độ trung bình theo tháng

air |> group_by(Month)|>
  summarize(mean_Temp = mean(Temp , na.rm = T)) |> 
  ggplot(aes(x = Month , y = mean_Temp)) + geom_col(fill = "blue") + labs(x = "tháng",y = "trung bình nhiệt dộ") + ggtitle("biểu đồ cột trung bình nhiệt độ theo tháng")
## Error in summarize(group_by(air, Month), mean_Temp = mean(Temp, na.rm = T)): argument "by" is missing, with no default

đầu tiên như các bài trước để có thể vẽ biểu đồ trung bình nhiệt độ theo tháng thì ta cần lọc ra dữ liệu theo tháng bằng group_by sau đó tính trung bình bằng summarize như trên ta sẽ được dữ liệu trung bình theo tháng.Để vẽ được biểu đồ thì cần dùng ggplotđể tạo lớp nền đầu tiên với x là tháng và y là trung bình nhiệt độ và để xuất hiện cột thì dùng geom_col.Nhìn vào biểu đồ ta có thấy nhiệt độ trung bình có thể đạt đến 97 độ F

Tiếp theo ta tiếp tục tạo ra thêm biểu dồ cột bằng một dataset khác là mtcarrs

library(scales)
## Warning: package 'scales' was built under R version 4.2.3
## 
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
## 
##     discard
## The following object is masked from 'package:readr':
## 
##     col_factor
data(mtcars)
datatable(mtcars)
mt <- mtcars 
mt|> group_by(vs)|> summarize(n = n())|> mutate(pG = percent(n/sum(n), accuracy = ,01))|>
  ggplot(aes(x = factor(vs), y = pG,fill =  factor(vs))) +  geom_col()+ theme_classic() + 
  labs(x = 'kiểu hộp sô', y = 'Tỷ lệ %')+ scale_fill_manual(values = c("1" = "blue", "0" = "red"))+ggtitle("Biểu đồ cột vè phần tỷ lệ phần trăm xe số tự đọng với xe số sàn")
## Error in summarize(group_by(mt, vs), n = n()): argument "by" is missing, with no default

ta cũng có thể cho nó hiện số phần trăm trên cột với hàm geom_text bằng cách như sau

mt <- mtcars 
mt|> group_by(vs)|> summarize(n = n())|> mutate(pG = percent(n/sum(n), accuracy = ,01))|>
  ggplot(aes(x = factor(vs), y = pG,fill =  factor(vs))) +  geom_col()+ theme_classic() + 
  labs(x = 'kiểu hộp sô', y = 'Tỷ lệ %')+ scale_fill_manual(values = c("1" = "blue", "0" = "red"))+ggtitle("Biểu đồ cột vè phần tỷ lệ phần trăm xe số tự đọng với xe số sàn") +
  geom_text(aes(label= pG),color = "pink",vjust= 2 ,size = 5)
## Error in summarize(group_by(mt, vs), n = n()): argument "by" is missing, with no default

3.2 biểu đồ scatter

biểu đồ scatter thường được dùng để đo lường mối tương quan giữa hai biến đã dược học trong kinh tế lượng. tiếp theo dây em sẽ tạo ra biểu đồ trong R để so sánh mức độ tương quan giữa 2 biến dựa vào

air |> ggplot(aes(x = Ozone,y = Temp))+ geom_point()
## Warning: Removed 37 rows containing missing values (`geom_point()`).

để vẽ đưuọc biểu đồ thì cần dùng lệnh ggplot với x = ozone và y = Temp và dùng geom_point để tạo ra biểu đồ scatter. ở đây ta tháy gần như biến nồng độ ozone và biến nhiệt độ Temp không có mối tương quan với nhau

Muốn thêm màu cho các biến thì ta có thể nhập là geom_point( color = ) thêm cac màu ta muốn chọn tùy ý thích cùng với lệch geom_smooth ta có thể tạo ra thêm đường hồi quy tuyến tinh

air |> ggplot(aes(x = Ozone,y = Temp))+ geom_point(color = "blue")+
  geom_smooth(method = 'lm', color = 'green') +
  theme_classic() +
  labs(x = 'Ozone', y = 'Temp')
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 37 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 37 rows containing missing values (`geom_point()`).

tiếp theo đây ta có thể tạo ra thêm với dữ liệu mtcars để xem xét độ tương quan biến

mt|>ggplot(aes(x=wt, y=mpg)) +
  geom_point(size=2, shape=23)

cùng với đố chúng ta có thêm kích thước và thay đổi hình dạng các chấm

ggplot(mtcars, aes(x=wt, y=mpg)) +
  geom_point() + 
  geom_text(label=rownames(mtcars))

với lệnh geom_text sẽ xuất hiện tên của các loại về trên vào biểu đồ. hoặc ta có thể chỉnh hình dạng và màu sắc kích thước theo biến

ggplot(mtcars, aes(x=wt, y=mpg)) +
  geom_point(aes(shape=factor(cyl)), color="blue", size=6) +
  scale_shape_manual(values=c(1, 2, 3)) +
  labs(x = "khối lượng xe", y = "dặm trên mỗi gallon")

ta cũng có thể chọn để nó có phân biệt rằng chỗ nào là biến tự động hoặc số sàn khi kết hợp như trên

mtcars|>ggplot(aes(x= wt,y= mpg))+
  geom_point(aes(color= factor(cyl),shape=factor(cyl)),size = 6)+
  scale_shape_manual(values = c(1,2,3))+
  geom_point(data= mt |> filter(hp >100),color= "pink",size=3)+
  labs(x = "khối lượng xe", y = "dặm trên mỗi gallon")+
  geom_smooth(method = 'lm', color = 'green') +
  facet_grid(. ~ cyl)
## `geom_smooth()` using formula = 'y ~ x'

dùng lệnh facet_gridđây sẽ tạo ra các ô (facets) trên biểu đồ dựa trên biến “cyl” trong dữ liệu mtcars. Các ô này sẽ hiển thị các phân nhóm dữ liệu dựa trên giá trị của biến “cyl”.

3.3 biểu đồ tròn

biểu đồ Pie chart hay tên tiensg việt là biểu đồ tròn thì dây là biểu đô thường được sử dụng để hiển thị phân bố tần suất hoặc tỷ lệ phần trăm của các thành phần trong một tập dữ liệu.ng ta có thể sử dụng hàm geom_col() hoặc geom_bar() để vẽ biểu đồ tròn. Chúng ta cũng có thể sử dụng hàm coord_polar() để chuyển đổi biểu đồ thành dạng tròn.

mt|>count(cyl)|>mutate(proportion = n / sum(n))|>
ggplot( aes(x = "", y = proportion, fill = factor(cyl))) +
  geom_col(width = 1, position = "fill") +
  geom_text(aes(label = scales::percent(proportion)),
            position = position_fill(vjust = 0.5),
            color = "white") +
  coord_polar("y", start = 0) +
  labs(fill = "Cylinder") +
  theme_void()+
  ggtitle("bieur đồ phần trăm về số các xylanh")

4 TUẦN 3

dữ liệu mới dùng cho tuần 3

4.1 giới thiệu về dữu liệu “airquality”

Airquality là một bộ dữ liệu chứa thông tin về chất lượng không khí tại thành phố New York trong mùa hè năm 1973. Dữ liệu này được sử dụng phổ biến để thực hiện các phân tích và mô hình hóa liên quan đến chất lượng không khí.

Với 153 quan sát và 6 biến gồm :

  • Ozone: Nồng độ ozone tích lũy (parts per billion).

  • Solar.R: Tổng lượng bức xạ mặt trời trong đơn vị langley (Langleys).

  • Wind: Tốc độ gió (mph).

  • Temp: Nhiệt độ (độ Fahrenheit).

  • Month: Tháng (5-9).

  • Day: Ngày (1-31).

gọi ra data airquality sau đó gán nó vào biến tên air và xem xét về cấu trúc của data này

data("airquality")
air <- airquality
data.table::data.table(air)
##      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
##  ---                                  
## 149:    30     193  6.9   70     9  26
## 150:    NA     145 13.2   77     9  27
## 151:    14     191 14.3   75     9  28
## 152:    18     131  8.0   76     9  29
## 153:    20     223 11.5   68     9  30
summary(air)
##      Ozone           Solar.R           Wind             Temp      
##  Min.   :  1.00   Min.   :  7.0   Min.   : 1.700   Min.   :56.00  
##  1st Qu.: 18.00   1st Qu.:115.8   1st Qu.: 7.400   1st Qu.:72.00  
##  Median : 31.50   Median :205.0   Median : 9.700   Median :79.00  
##  Mean   : 42.13   Mean   :185.9   Mean   : 9.958   Mean   :77.88  
##  3rd Qu.: 63.25   3rd Qu.:258.8   3rd Qu.:11.500   3rd Qu.:85.00  
##  Max.   :168.00   Max.   :334.0   Max.   :20.700   Max.   :97.00  
##  NA's   :37       NA's   :7                                       
##      Month            Day      
##  Min.   :5.000   Min.   : 1.0  
##  1st Qu.:6.000   1st Qu.: 8.0  
##  Median :7.000   Median :16.0  
##  Mean   :6.993   Mean   :15.8  
##  3rd Qu.:8.000   3rd Qu.:23.0  
##  Max.   :9.000   Max.   :31.0  
## 

4.2 pivot table

Trong R thường dữu liệu sẽ được lưu trữ và định dạng năm ngang phù hợp cho việc trình bày nhưng không khi cần phân thì không tốt cho lắm nên việc có sự xuất hiện của pivot table là điều giúp ta thực hiện việc xoay trục dữ liệu. Ta có pivot là một công cụ phân tích dữ liệu quan trọng trong việc tổ chức, tổng hợp và tóm tắt thông tin từ một bộ dữ liệu. Pivot cho phép chuyển đổi từ dạng long sang dạng wide hoặc ngược lại.

4.2.1 pivot_longer

Sử dụng data air để tạo ra bảng tính trung bình về lượng ozone
- bảng tổng hợp dạng long về trung bình lượng ozone trong ngày

library(tidyverse)
airquality_long <- pivot_longer(air, cols = -c(Month, Day), names_to = "Variable", values_to = "Value")
ozone_avgD <- airquality_long %>%
  filter(Variable == "Ozone") %>%  
  group_by(Day) %>%  
  summarize(Average_Ozone = mean(Value, na.rm = TRUE))
## Error in summarize(., Average_Ozone = mean(Value, na.rm = TRUE)): argument "by" is missing, with no default
print(ozone_avgD)
## Error in print(ozone_avgD): object 'ozone_avgD' not found

đầu tiền bằng cách tạo ra bảng pivot table dạng ngang bằng pivot_longer và sau đó tính ra trung bình theo ngày của nồng ozone bằng toán tử %>% với hàm đầu tiên là filter để chọn ra các biến Ozone sau đó dùng dùng group_by để chọn cột ngày và dùng hàm summarize để tính trung bình

  • bảng tổng hợp dạng long về trung bình lượng ozone trong ngày
air_M_longer <- air %>%
  group_by(Month) %>%
  summarize(Average_Ozone = mean(Ozone, na.rm = TRUE)) %>%
  pivot_longer(cols = -Month, names_to = "Variable", values_to = "Value")
## Error in summarize(., Average_Ozone = mean(Ozone, na.rm = TRUE)): argument "by" is missing, with no default
print(air_M_longer)
## Error in print(air_M_longer): object 'air_M_longer' not found

đầu tiên e sử dụng %>% để từ data *air** hàm group_by chọn dữ liệu theo cột “Month” sau đó tiếp tụp dùng hàm summarize để tính nồng độ ozone trung bình và sau cùng là e dùng hàm pivot_longer để tạo ra một dữ liệu kiểu dài giúp e quan sát được trung bình nồng độ ozone theo tháng một cách dễ dàng hơn

air_DM_longer <- bind_rows(air_M_longer,ozone_avgD)
## Error in list2(...): object 'air_M_longer' not found
print(air_DM_longer)
## Error in print(air_DM_longer): object 'air_DM_longer' not found

cũng có thể ghép nối 2 bảng lại với nhau bằng lệnh bind_row

4.2.2 Pivot wider

tương tự như với dạng long ta cũng có thể tạo ra 1 bảng với dạng wide với các câu lệch gần như tương tự chỉ khác là dùng pivot_wider

library(tidyr)

wider_ozoneMontth <- air %>%
  group_by(Month) %>%
  summarise(mean_Ozone = mean(Ozone, na.rm = TRUE)) %>%
  pivot_wider(names_from = "Month", values_from = "mean_Ozone")
print(wider_ozoneMontth)
## # A tibble: 1 × 5
##     `5`   `6`   `7`   `8`   `9`
##   <dbl> <dbl> <dbl> <dbl> <dbl>
## 1  23.6  29.4  59.1  60.0  31.4

5 TUẦN 2

5.1 tính các dữ liệu theo tiêu chí thống kê

5.1.1 tính trung bình

#trung bình của tổng mã lực 
mean(mtcars$hp)
## [1] 146.6875

5.1.2 phương sai

var(mtcars$hp)
## [1] 4700.867

5.1.3 độ lệch chuẩn

sd(mtcars$hp)
## [1] 68.56287

5.1.4 tóm tắt các thống kê

summary(mtcars)
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000

5.1.5 tính tứ phân vị

q1 <- quantile(mtcars$hp, probs = 0.25)
trung_vi <-quantile(mtcars$hp, probs = 0.5) 
q3 <- quantile(mtcars$hp, probs = 0.75)
#in  csc tứ phân vị ra 
print(q1)
##  25% 
## 96.5
print(trung_vi)
## 50% 
## 123
print(q3)
## 75% 
## 180

5.2 tính các thống kê có điều kiện

5.2.1 tính trung bình có điều kiện

#tính trung bình chỉ số mã lực dựa vào xe hộp số tự động hay số sàn(0= tự động, 1 = số sàn 
aggregate(mtcars$hp, list(mtcars$vs), FUN = 'mean')
##   Group.1         x
## 1       0 189.72222
## 2       1  91.35714
#

5.3 tạo các một bảng data mới và sắp xeespp dữ liệu

library(tidyverse)
carvs <-factor(mtcars$vs, label = c("hộp số tự động", "số sàn"))
carvs
##  [1] hộp số tự động hộp số tự động số sàn         số sàn         hộp số tự động
##  [6] số sàn         hộp số tự động số sàn         số sàn         số sàn        
## [11] số sàn         hộp số tự động hộp số tự động hộp số tự động hộp số tự động
## [16] hộp số tự động hộp số tự động số sàn         số sàn         số sàn        
## [21] số sàn         hộp số tự động hộp số tự động hộp số tự động hộp số tự động
## [26] số sàn         hộp số tự động số sàn         hộp số tự động hộp số tự động
## [31] hộp số tự động số sàn        
## Levels: hộp số tự động số sàn

6 Tuần 1

6.1 giới thiệt về dataset “mtcars”

6.1.1 giải thích về dữ liệu

giới thiệu :đây là dữ liệu lấy từ tạp chí Motor Trend US năm 1974, nhằm giới thiệu cho công chúng về những mẫu moto và các thông số kĩ thuật bao gồm mức tiêu thụ nhiên liệu và 10 nhóm của thiết kế ô tô và hiệu suất của 32 ô tô (mẫu 1973–74).

6.1.2 ý nghĩa các biến

Ý nghĩa của các biến dữ liệu

  • mpg: dặm/gallon

  • cyl:số xylanh

  • disp:dung tích xylanh

  • hp:tổng mã lực

  • drat:Tỷ lệ trục sau

  • wt:trọng lượng(1000LBS)

  • qsec:1/4 dặm trong thời gian

  • vs:động (0 = hình chữ V, 1 = thẳng)

  • am:hộp số (0 = tự đọng, 1 = số sàn)

  • gear:số bánh răng phía trước

  • carb:số bộ chế điều hòa khí

##gọi ra data set mtcars

#gọi ra data mtcars
data("mtcars")
#gán bến m cho dữ liệu mtcars
m <- mtcars
#mô tả mtcars
str(mtcars)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...

6.2 các câu lệnh xuất hiện dữ liệu đầu và cuối

6.2.1 câu lệch head()

#hiện 6 dòng đầu tiên của dữ liệu
head(m)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

6.2.2 câu lệnh tall

#6 dòng cuối của mtcars
tail(m)
##                 mpg cyl  disp  hp drat    wt qsec vs am gear carb
## Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.7  0  1    5    2
## Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.9  1  1    5    2
## Ford Pantera L 15.8   8 351.0 264 4.22 3.170 14.5  0  1    5    4
## Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.5  0  1    5    6
## Maserati Bora  15.0   8 301.0 335 3.54 3.570 14.6  0  1    5    8
## Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.6  1  1    4    2

6.3 tạo bảng và gán các cột mới vào dữ liệu

#gán cột tổng mã lực cho biến hp
hp<- m$hp
hp100 <- hp[hp>100]#các đươn vị lớn hơn 100 của tổng mã lực
str(hp100)
##  num [1:23] 110 110 110 175 105 245 123 123 180 180 ...
m$loghp <- log(m$hp)
#phân tỏ hp thành 4 tổ 
hp4 <- cut(hp,4)
table(cut(hp,4))
## 
## (51.7,123]  (123,194]  (194,264]  (264,335] 
##         15         10          6          1
table(cut(m$cyl,4),hp4)
##        hp4
##         (51.7,123] (123,194] (194,264] (264,335]
##   (4,5]         11         0         0         0
##   (5,6]          4         3         0         0
##   (6,7]          0         0         0         0
##   (7,8]          0         7         6         1
#lấy dữ liệu tại vị trí dòng 2 cột 4
m[2,4]
## [1] 110
#là 110
#dặt tên các cột trong m 
names(m) <- c("M","C","D","H","DR","W","Q","V","A","G","CA")

6.4 vẽ biều đồ trong R

# biểu đồ cho số lượng hộp số (cylinders)
barplot(table(mtcars$cyl), xlab = "Cylinders", ylab = "Frequency")