họ và tên : Nguyễn Anh Duy
Mssv 2121012870
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)
ở đâ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"
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.
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ị).
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ụ
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
Để 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)
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
để 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
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”.
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")
dữ liệu mới dùng cho tuần 3
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
##
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.
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
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
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
#trung bình của tổng mã lực
mean(mtcars$hp)
## [1] 146.6875
var(mtcars$hp)
## [1] 4700.867
sd(mtcars$hp)
## [1] 68.56287
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
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
#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
#
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
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).
Ý 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 ...
#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 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
#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")
# biểu đồ cho số lượng hộp số (cylinders)
barplot(table(mtcars$cyl), xlab = "Cylinders", ylab = "Frequency")