library(jsonlite)
library(rvest)
library(tidyverse)
library(DT)
links <- "https://coinmarketcap.com/"
data <- read_html(links)
Name <- data %>% html_nodes(".cmc-link .kKpPOn") %>% html_text()
Price <- data %>% html_nodes(".iVdfNf span") %>% html_text()
ohours <- data %>% html_nodes("td:nth-child(5) .sc-97d6d2ca-0") %>% html_text()
thours <- data %>% html_nodes("td:nth-child(6) .sc-97d6d2ca-0") %>% html_text()
sdays <- data %>% html_nodes("td:nth-child(7) .sc-97d6d2ca-0") %>% html_text()
marketcap <- data %>% html_nodes(".bOsKfy") %>% html_text()
Cirsup <- data %>% html_nodes("td:nth-child(10)") %>% html_text()
acroname <- data %>% html_nodes(".coin-item-symbol") %>% html_text()
Coinmarket <- data.frame(Name, acroname, Price, ohours, thours, sdays, marketcap, Cirsup)
datatable(Coinmarket)
Tạo một data frame gồm 8 biến, dữ liệu của các biến này được lấy từ trang web Coinmarketcap.com. CoinMarketCap là một trang web được sử dụng để theo dõi, phân tích và cung cấp thông tin về thị trường tiền điện tử. Trang web này chứa thông tin về hàng trăm loại tiền điện tử khác nhau, bao gồm cả các đồng tiền điện tử nổi tiếng như Bitcoin, Ethereum, Ripple và Litecoin.
Name: Tên của các đồng tiền điện tử
acroname: Ký hiệu của các đồng tiền điện tử
Price: Giá hiện tại của đồng tiền điện tử
ohours: tỷ lệ tăng/ giảm của đồng tiền trong 1h qua
thours: tỷ lệ tăng/ giảm của đồng tiền trong 24h qua
sdays: tỷ lệ tăng giảm của đồng tiền trong 7 ngày qua
marketcap: Vốn hoá thị trường của đồng tiền đó
Cirsup: Số lượng đồng tiền đang lưu thông trên thị trường
library(tidyverse)
library(stringr)
library(AER)
library(DT)
data("TravelMode")
d <- TravelMode
summarisee <- function(data, var) {
data %>% summarise( min = min({{var}}, na.rm = T), max = max({{var}}, na.rm=T), mean = mean({{var}}, na.rm=T), sum = sum({{var}},na.rm=T),median = median({{var}},na.rm=T), numeric = is.numeric({{var}}), vector= is.vector({{var}}), sd = sd({{var}}, na.rm=T),var = var({{var}}, na.rm=T), quantile = quantile({{var}}, na.rm = T), n= n())
}
Thực hành function này với bộ dữ liệu TravelMode (Phần mô tả dữ liệu ở mục 5.1.1)
summarisee(d, d$vcost)
## min max mean sum median numeric vector sd var quantile n
## 1 2 180 47.76071 40119 39 TRUE TRUE 32.371 1047.882 2.00 840
## 2 2 180 47.76071 40119 39 TRUE TRUE 32.371 1047.882 23.00 840
## 3 2 180 47.76071 40119 39 TRUE TRUE 32.371 1047.882 39.00 840
## 4 2 180 47.76071 40119 39 TRUE TRUE 32.371 1047.882 66.25 840
## 5 2 180 47.76071 40119 39 TRUE TRUE 32.371 1047.882 180.00 840
summarisee(d,d$gcost)
## min max mean sum median numeric vector sd var quantile n
## 1 30 269 110.8798 93139 101.5 TRUE TRUE 47.97835 2301.922 30.0 840
## 2 30 269 110.8798 93139 101.5 TRUE TRUE 47.97835 2301.922 71.0 840
## 3 30 269 110.8798 93139 101.5 TRUE TRUE 47.97835 2301.922 101.5 840
## 4 30 269 110.8798 93139 101.5 TRUE TRUE 47.97835 2301.922 144.0 840
## 5 30 269 110.8798 93139 101.5 TRUE TRUE 47.97835 2301.922 269.0 840
summarisee(d,d$travel)
## min max mean sum median numeric vector sd var quantile n
## 1 63 1440 486.1655 408379 397 TRUE TRUE 301.4391 90865.54 63.0 840
## 2 63 1440 486.1655 408379 397 TRUE TRUE 301.4391 90865.54 234.0 840
## 3 63 1440 486.1655 408379 397 TRUE TRUE 301.4391 90865.54 397.0 840
## 4 63 1440 486.1655 408379 397 TRUE TRUE 301.4391 90865.54 795.5 840
## 5 63 1440 486.1655 408379 397 TRUE TRUE 301.4391 90865.54 1440.0 840
summarisee(d,d$wait)
## min max mean sum median numeric vector sd var quantile n
## 1 0 99 34.58929 29055 35 TRUE TRUE 24.94861 622.433 0.00 840
## 2 0 99 34.58929 29055 35 TRUE TRUE 24.94861 622.433 0.75 840
## 3 0 99 34.58929 29055 35 TRUE TRUE 24.94861 622.433 35.00 840
## 4 0 99 34.58929 29055 35 TRUE TRUE 24.94861 622.433 53.00 840
## 5 0 99 34.58929 29055 35 TRUE TRUE 24.94861 622.433 99.00 840
summarisee(d,d$income)
## min max mean sum median numeric vector sd var quantile n
## 1 2 72 34.54762 29020 34.5 TRUE TRUE 19.67604 387.1467 2.0 840
## 2 2 72 34.54762 29020 34.5 TRUE TRUE 19.67604 387.1467 20.0 840
## 3 2 72 34.54762 29020 34.5 TRUE TRUE 19.67604 387.1467 34.5 840
## 4 2 72 34.54762 29020 34.5 TRUE TRUE 19.67604 387.1467 50.0 840
## 5 2 72 34.54762 29020 34.5 TRUE TRUE 19.67604 387.1467 72.0 840
groupby <- function(a,b,c,d) {
a %>% group_by({{b}}) %>% arrange({{b}}, {{c}}) %>% slice_head(n =5) %>% arrange({{b}}) %>% select({{b}},{{c}},{{d}})
}
groupby(d,mode, individual,size)
## # A tibble: 20 × 3
## # Groups: mode [4]
## mode individual size
## <fct> <fct> <int>
## 1 air 1 1
## 2 air 2 2
## 3 air 3 1
## 4 air 4 3
## 5 air 5 2
## 6 train 1 1
## 7 train 2 2
## 8 train 3 1
## 9 train 4 3
## 10 train 5 2
## 11 bus 1 1
## 12 bus 2 2
## 13 bus 3 1
## 14 bus 4 3
## 15 bus 5 2
## 16 car 1 1
## 17 car 2 2
## 18 car 3 1
## 19 car 4 3
## 20 car 5 2
groupby(d, choice, mode, wait)
## # A tibble: 10 × 3
## # Groups: choice [2]
## choice mode wait
## <fct> <fct> <int>
## 1 no air 69
## 2 no air 64
## 3 no air 69
## 4 no air 64
## 5 no air 64
## 6 yes air 45
## 7 yes air 90
## 8 yes air 50
## 9 yes air 15
## 10 yes air 30
groupby vừa tạo. Ứng với từng lựa chọn
không và có, ta xem 5 kết quả khảo sát đầu tiên về mode(phương tiện di
chuyển) và thời gian chờ đợi trước khi phương tiện di chuyển.map <- function(a,b,c,d) {
a %>% filter({{c}}>100) %>% ggplot(map = aes(x = {{b}}, y ={{c}}, color = {{d}})) + geom_point() + geom_smooth(formula = y~ x, method = "lm", color = "black")
}
map bao gồm 4
thành phần, a là bộ dữ liệu đầu vào, b ứng với giá trị biểu hiện trên
trục hoành, c ứng với giá trị cần biểu hiện trên trục tung, d dùng để tô
màu cho các giá trị cần thể hiện trên biểu đồ. Đầu tiên câu lệnh dùng
hàm filter để lọc những giá trị lớn hơn 100 của biến c, sau đó câu lệnh
tiến hành vẽ biểu đồ scatter và đường thẳng hồi quy 2 biếnmap(d,income,vcost,mode)
map(d, vcost, gcost, choice)
map(d, travel,vcost,mode)
install.packages("WDI", repos="http://cran.us.r-project.org")
## package 'WDI' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\PHUONG UYEN\AppData\Local\Temp\RtmpyIP6eP\downloaded_packages
library(WDI)
library(janitor)
GRGDP <- WDI(country = "all", indicator = "6.0.GDP_growth", start = 2010, end = 2022)
GRGDP <- na.omit(GRGDP)
GRGDP <- clean_names(GRGDP)
indicator <- "6.0.GDP_growth"
indicator_info <- WDIsearch(field = "indicator")
invisible(indicator)
TTER <- WDI(country = "all", indicator = "1.2.PSev.2.5usd", start = 2010, end = 2022)
TTER <- na.omit(TTER)
TTER <- clean_names(TTER)
indicator <- "1.2.PSev.2.5usd"
indicator_info <- WDIsearch(field = "indicator")
invisible(indicator)
Chỉ số này đo lường tỉ lệ dân số sống dưới mức nghèo $2.50 một ngày (PPP) theo tỷ lệ phần trăm của dân số toàn bộ. Dữ liệu được tính dựa trên các dữ liệu về thu nhập và thông tin về mức sống tại các quốc gia khác nhau. Chỉ số này được sử dụng để đánh giá mức độ nghèo đói và sự phân bố thu nhập trong một quốc gia hoặc khu vực.
TTTO <- WDI(country = "all", indicator = "5.1.1_MDA.TOTA.AID.UNICEF", start = 2010, end = 2022)
TTTO <- na.omit(TTTO)
TTTO <- clean_names(TTTO)
indicator <- "5.1.1_MDA.TOTA.AID.UNICEF"
indicator_info <- WDIsearch(field = "indicator")
invisible(indicator)
Chỉ số này đo lường tổng số tiền viện trợ phát triển chính thức (chi trả toàn diện) từ UNICEF dành cho sức khỏe mẹ, trẻ sơ sinh và trẻ em. Đơn vị đo lường là đô la Mỹ (USD). Dữ liệu này cung cấp thông tin về quỹ viện trợ từ UNICEF để hỗ trợ các chương trình và dự án liên quan đến sức khỏe mẹ, trẻ sơ sinh và trẻ em trên toàn thế giới.
TTIR1 <- WDI(country = "all", indicator = "5.1.5_CIV.TOTA.AID.FSD", start = 2010, end = 2022)
TTIR1 <- na.omit(TTIR1)
TTIR1 <- clean_names(TTIR1)
indicator <- "5.1.5_CIV.TOTA.AID.FSD"
indicator_info <- WDIsearch(field = "indicator")
invisible(indicator)
Chỉ số này đo lường tổng số tiền viện trợ phát triển chính thức (chi trả toàn diện) dành cho phát triển ngành tài chính. Đơn vị đo lường là đô la Mỹ (USD). Dữ liệu này cung cấp thông tin về quỹ viện trợ để hỗ trợ phát triển và cải thiện ngành tài chính trong các quốc gia và vùng lãnh thổ trên toàn thế giới.
TTIR2 <- WDI(country = "all", indicator = "3.0.IncShr.q1", start = 2010, end = 2022)
TTIR2 <- na.omit(TTIR2)
TTIR2 <- clean_names(TTIR2)
indicator <- "3.0.IncShr.q1"
indicator_info <- WDIsearch(field = "indicator")
invisible(indicator)
Chỉ số này đo lường phần trăm thu nhập thuộc sở hữu của 20% người có thu nhập thấp nhất trong một quốc gia hoặc vùng lãnh thổ. Dữ liệu được tính dựa trên dữ liệu theo quý, cho phép theo dõi sự thay đổi của phân phối thu nhập cho nhóm người có thu nhập thấp nhất theo thời gian. Chỉ số này giúp đánh giá mức độ bình đẳng thu nhập và phân phối kinh tế trong một quốc gia hoặc khu vực.
TTINF1 <- WDI(country = "all", indicator = "BN.KLT.OTHR.CD", start = 2010, end = 2022)
TTINF1 <- na.omit(TTINF1)
TTINF1 <- clean_names(TTINF1)
indicator <- "BN.KLT.OTHR.CD"
indicator_info <- WDIsearch(field = "indicator")
invisible(indicator)
Chỉ số này đo lường số dư các khoản vay không thực hiện được khác trong một quốc gia hoặc vùng lãnh thổ. Đơn vị đo lường là đô la Mỹ (USD). Chỉ số này cung cấp thông tin về các khoản vay không được trả trong thời gian quy định hoặc không đáp ứng đủ yêu cầu của ngân hàng hoặc tổ chức tín dụng. Nó thường được sử dụng để đánh giá mức độ rủi ro trong hệ thống tài chính và tình hình tín dụng của một quốc gia.
TTINF2 <- WDI(country = "all", indicator = "DT.ODA.DACD.SOCI.CD", start = 2010, end = 2022)
TTINF2 <- na.omit(TTINF2)
TTINF2 <- clean_names(TTINF2)
indicator <- "DT.ODA.DACD.SOCI.CD"
indicator_info <- WDIsearch(field = "indicator")
invisible(indicator)
Chỉ số này đo lường luồng vốn đầu tư trực tiếp từ nước ngoài, ròng, trong một quốc gia hoặc vùng lãnh thổ. Đơn vị đo lường là đô la Mỹ (USD). Chỉ số này cung cấp thông tin về số tiền ròng mà một quốc gia nhận được từ vốn đầu tư trực tiếp từ các nhà đầu tư nước ngoài sau khi trừ đi các luồng vốn ra đi. Điều này giúp đánh giá mức độ thu hút và dòng vốn đầu tư trực tiếp vào một quốc gia hoặc khu vực.Ư
TTGDP2 <- WDI(country = "all", indicator = "BX.TRF.PWKR.GD.ZS", start = 2010, end = 2022)
TTGDP2 <- na.omit(TTGDP2)
TTGDP2 <- clean_names(TTGDP2)
indicator <- "BX.TRF.PWKR.GD.ZS"
indicator_info <- WDIsearch(field = "indicator")
invisible(indicator)
Chỉ số này đo lường tỷ lệ chuyển tiền cá nhân và bồi thường cho nhân viên nhận được so với GDP trong một quốc gia hoặc vùng lãnh thổ. Đơn vị đo lường là phần trăm (%). Chỉ số này cung cấp thông tin về mức độ chuyển tiền cá nhân và bồi thường cho nhân viên đóng góp vào GDP của một quốc gia. Điều này giúp đánh giá vai trò của chuyển tiền cá nhân và bồi thường cho nhân viên trong nền kinh tế và tình hình tài chính của một quốc gia.
TTGDP3 <- WDI(country = "all", indicator = "CC.SP.EXP.ZS", start = 2010, end = 2022)
TTGDP3 <- na.omit(TTGDP3)
TTGDP3 <- clean_names(TTGDP3)
indicator <- "CC.SP.EXP.ZS"
indicator_info <- WDIsearch(field = "indicator")
invisible(indicator)
Chỉ số này đo lường tỷ lệ chi tiêu của chính phủ trung ương so với tổng chi tiêu của chính phủ trong một quốc gia hoặc vùng lãnh thổ. Đơn vị đo lường là phần trăm (%). Chỉ số này cung cấp thông tin về mức độ chi tiêu của chính phủ trung ương so với tổng chi tiêu của chính phủ. Điều này giúp đánh giá vai trò và trọng tâm của chính phủ trung ương trong việc quản lý và phân bổ nguồn lực tài chính của một quốc gia.
TTIR3 <- WDI(country = "all", indicator = "AG.LND.IRIG.PO.HA", start = 2010, end = 2022)
TTIR3 <- na.omit(TTIR3)
TTIR3 <- clean_names(TTIR3)
indicator <- "AG.LND.IRIG.PO.HA"
indicator_info <- WDIsearch(field = "indicator")
invisible(indicator)
Chỉ số này đo lường tỷ lệ diện tích đất nông nghiệp được trang bị hệ thống tưới tiêu so với tổng diện tích đất nông nghiệp trong một quốc gia hoặc vùng lãnh thổ. Đơn vị đo lường là phần trăm (%). Chỉ số này cung cấp thông tin về mức độ sử dụng hệ thống tưới tiêu trong nông nghiệp, cho thấy khả năng cung cấp nước cho cây trồng trong sản xuất nông nghiệp. Điều này giúp đánh giá khả năng phát triển và hiệu suất của ngành nông nghiệp trong một quốc gia hoặc khu vực.
library(tidyverse)
library(AER)
library(DT)
data("TravelMode")
d <- TravelMode
Lọc dữ liệu với filter()
d %>% filter(mode == "air") %>%
datatable()
d %>% filter(mode == "train", wait > 50) %>% datatable()
d %>% filter(mode == "air", size == 6) %>% datatable()
d$nsize <- case_match(d$size, 1 ~ "Nhỏ nhất", 2 ~ "Nhỏ", 3 ~ "Trung bình", 4 ~ "Vừa", 5 ~ "Lớn", 6 ~ "Rất lớn")
d <- d %>% mutate(choice = case_when(choice == "yes" ~ 1, choice == "no" ~ 0))
d <- d %>% mutate(classify = case_when(vcost > 100 | gcost > 200 ~ "Rich", mode == "car" ~ "Poor", TRUE ~ "Normal"))
d <- d %>% mutate(cost = case_when(vcost + gcost > 300 ~ "Big", vcost + gcost > 200 ~ "Medimum", TRUE ~ "Small" ))
d <- d %>% mutate( cost = fct_relevel(cost, c("Small", "Medimum", "Big")))
d <- d %>% mutate(groupic = case_when(income < 10 ~ "<10 trieu" ,income >10 & income <50 ~ "10-50 trieu", income > 50 ~ ">50 trieu", TRUE ~ "other" ))
d <- d %>% mutate(groupic = fct_relevel(groupic, c("<10 trieu", "10-50 trieu", ">50 trieu", "other")))
d %>% group_by(mode) %>% tally()
## # A tibble: 4 × 2
## mode n
## <fct> <int>
## 1 air 210
## 2 train 210
## 3 bus 210
## 4 car 210
d %>% group_by(mode, classify) %>% tally()
## # A tibble: 8 × 3
## # Groups: mode [4]
## mode classify n
## <fct> <chr> <int>
## 1 air Normal 136
## 2 air Rich 74
## 3 train Normal 179
## 4 train Rich 31
## 5 bus Normal 206
## 6 bus Rich 4
## 7 car Poor 207
## 8 car Rich 3
d %>% summarise( n = n(), min = min(wait), max = max(wait), mean = mean(wait), Qua = quantile(wait,0.3), var = var(wait), sd = sd(wait))
## n min max mean Qua var sd
## 1 840 0 99 34.58929 15.7 622.433 24.94861
d %>% group_by(mode) %>% summarise(n = n(), min = min(wait), max = max(wait), mean = mean(wait), Qua = quantile(wait,0.3), var = var(wait), sd = sd(wait))
## # A tibble: 4 × 8
## mode n min max mean Qua var sd
## <fct> <int> <int> <int> <dbl> <dbl> <dbl> <dbl>
## 1 air 210 5 99 61.0 64 247. 15.7
## 2 train 210 1 99 35.7 34 151. 12.3
## 3 bus 210 5 60 41.7 35 146. 12.1
## 4 car 210 0 0 0 0 0 0
d %>% group_by(mode) %>% arrange(mode, individual) %>% slice_head( n = 5) %>% arrange(mode) %>% select(mode, individual, groupic)
## # A tibble: 20 × 3
## # Groups: mode [4]
## mode individual groupic
## <fct> <fct> <fct>
## 1 air 1 10-50 trieu
## 2 air 2 10-50 trieu
## 3 air 3 10-50 trieu
## 4 air 4 >50 trieu
## 5 air 5 10-50 trieu
## 6 train 1 10-50 trieu
## 7 train 2 10-50 trieu
## 8 train 3 10-50 trieu
## 9 train 4 >50 trieu
## 10 train 5 10-50 trieu
## 11 bus 1 10-50 trieu
## 12 bus 2 10-50 trieu
## 13 bus 3 10-50 trieu
## 14 bus 4 >50 trieu
## 15 bus 5 10-50 trieu
## 16 car 1 10-50 trieu
## 17 car 2 10-50 trieu
## 18 car 3 10-50 trieu
## 19 car 4 >50 trieu
## 20 car 5 10-50 trieu
d %>% group_by(mode) %>% arrange(mode, individual) %>% slice_sample( n = 5) %>% arrange(mode) %>% select(mode, individual, groupic)
## # A tibble: 20 × 3
## # Groups: mode [4]
## mode individual groupic
## <fct> <fct> <fct>
## 1 air 161 >50 trieu
## 2 air 137 10-50 trieu
## 3 air 116 10-50 trieu
## 4 air 109 >50 trieu
## 5 air 205 10-50 trieu
## 6 train 20 >50 trieu
## 7 train 71 10-50 trieu
## 8 train 152 other
## 9 train 175 10-50 trieu
## 10 train 123 10-50 trieu
## 11 bus 181 10-50 trieu
## 12 bus 52 10-50 trieu
## 13 bus 143 10-50 trieu
## 14 bus 10 >50 trieu
## 15 bus 76 <10 trieu
## 16 car 46 >50 trieu
## 17 car 89 10-50 trieu
## 18 car 64 <10 trieu
## 19 car 96 >50 trieu
## 20 car 172 10-50 trieu
d %>% as_tibble() %>% add_count(groupic) %>% select(groupic, n, gcost) %>% head(n =5)
## # A tibble: 5 × 3
## groupic n gcost
## <fct> <int> <int>
## 1 10-50 trieu 488 70
## 2 10-50 trieu 488 71
## 3 10-50 trieu 488 70
## 4 10-50 trieu 488 30
## 5 10-50 trieu 488 68
d %>% add_count(groupic) %>% filter(n <300) %>% select(groupic, n, mode, wait, vcost) %>% head(n =10)
## groupic n mode wait vcost
## 1 >50 trieu 156 air 64 49
## 2 >50 trieu 156 train 44 26
## 3 >50 trieu 156 bus 53 21
## 4 >50 trieu 156 car 0 5
## 5 >50 trieu 156 air 69 58
## 6 >50 trieu 156 train 34 31
## 7 >50 trieu 156 bus 35 25
## 8 >50 trieu 156 car 0 7
## 9 other 92 air 64 45
## 10 other 92 train 44 24
d %>% group_by( mode) %>% mutate(mean_wait = mean(wait), difference = mean_wait - wait) %>% select(mode, wait, mean_wait, difference)
## # A tibble: 840 × 4
## # Groups: mode [4]
## mode wait mean_wait difference
## <fct> <int> <dbl> <dbl>
## 1 air 69 61.0 -7.99
## 2 train 34 35.7 1.69
## 3 bus 35 41.7 6.66
## 4 car 0 0 0
## 5 air 64 61.0 -2.99
## 6 train 44 35.7 -8.31
## 7 bus 53 41.7 -11.3
## 8 car 0 0 0
## 9 air 69 61.0 -7.99
## 10 train 34 35.7 1.69
## # ℹ 830 more rows
d <- d %>% mutate(ncost = vcost + gcost)
d %>% group_by(groupic) %>% mutate( mean_cost = mean(ncost), diff_cost = ncost - mean_cost ) %>% select(individual ,groupic, ncost, mean_cost, diff_cost)
## # A tibble: 840 × 5
## # Groups: groupic [4]
## individual groupic ncost mean_cost diff_cost
## <fct> <fct> <int> <dbl> <dbl>
## 1 1 10-50 trieu 129 157. -28.0
## 2 1 10-50 trieu 102 157. -55.0
## 3 1 10-50 trieu 95 157. -62.0
## 4 1 10-50 trieu 40 157. -117.
## 5 2 10-50 trieu 126 157. -31.0
## 6 2 10-50 trieu 115 157. -42.0
## 7 2 10-50 trieu 110 157. -47.0
## 8 2 10-50 trieu 61 157. -96.0
## 9 3 10-50 trieu 244 157. 87.0
## 10 3 10-50 trieu 293 157. 136.
## # ℹ 830 more rows
d %>% group_by(mode) %>% mutate(mean_vcost = mean(vcost), diff_vcost = vcost - mean_vcost) %>% select(mode, vcost, mean_vcost, diff_vcost)
## # A tibble: 840 × 4
## # Groups: mode [4]
## mode vcost mean_vcost diff_vcost
## <fct> <int> <dbl> <dbl>
## 1 air 59 85.3 -26.3
## 2 train 31 51.3 -20.3
## 3 bus 25 33.5 -8.46
## 4 car 10 21.0 -11.0
## 5 air 58 85.3 -27.3
## 6 train 31 51.3 -20.3
## 7 bus 25 33.5 -8.46
## 8 car 11 21.0 -10.0
## 9 air 115 85.3 29.7
## 10 train 98 51.3 46.7
## # ℹ 830 more rows
d %>% group_by(mode) %>% summarise(n = n())
## # A tibble: 4 × 2
## mode n
## <fct> <int>
## 1 air 210
## 2 train 210
## 3 bus 210
## 4 car 210
d %>% count(mode, cost)
## mode cost n
## 1 air Small 123
## 2 air Medimum 78
## 3 air Big 9
## 4 train Small 112
## 5 train Medimum 81
## 6 train Big 17
## 7 bus Small 165
## 8 bus Medimum 45
## 9 car Small 198
## 10 car Medimum 11
## 11 car Big 1
table(d$mode, d$cost)
##
## Small Medimum Big
## air 123 78 9
## train 112 81 17
## bus 165 45 0
## car 198 11 1
d <- d %>% mutate(nchoice = case_match(d$choice ,0 ~ "khong", 1 ~ "co"), nchoice= fct_relevel(nchoice, c("khong","co")))
d %>% count(cost, nchoice)
## cost nchoice n
## 1 Small khong 438
## 2 Small co 160
## 3 Medimum khong 173
## 4 Medimum co 42
## 5 Big khong 19
## 6 Big co 8
table(d$cost, d$nchoice)
##
## khong co
## Small 438 160
## Medimum 173 42
## Big 19 8
d %>% count(groupic) %>% mutate(percent = scales::percent(n/sum(n)))
## groupic n percent
## 1 <10 trieu 104 12.4%
## 2 10-50 trieu 488 58.1%
## 3 >50 trieu 156 18.6%
## 4 other 92 11.0%
d %>% group_by(mode) %>% count(cost) %>% mutate(percent = scales::percent(n/sum(n)))
## # A tibble: 11 × 4
## # Groups: mode [4]
## mode cost n percent
## <fct> <fct> <int> <chr>
## 1 air Small 123 59%
## 2 air Medimum 78 37%
## 3 air Big 9 4%
## 4 train Small 112 53%
## 5 train Medimum 81 39%
## 6 train Big 17 8%
## 7 bus Small 165 79%
## 8 bus Medimum 45 21%
## 9 car Small 198 94.3%
## 10 car Medimum 11 5.2%
## 11 car Big 1 0.5%
d %>% mutate(ncost = vcost + gcost) %>% group_by(mode) %>% summarise(mean = mean(ncost), var = var(ncost),median = median(ncost), sum = sum(ncost))
## # A tibble: 4 × 5
## mode mean var median sum
## <fct> <dbl> <dbl> <dbl> <int>
## 1 air 188. 3321. 178. 39459
## 2 train 182. 6948. 176. 38123
## 3 bus 149. 3136. 138 31230
## 4 car 116. 3304. 111 24446
d %>% group_by(mode) %>% summarise(max_ic= max(income[nchoice == "co"]),
min_ic= min(income[nchoice == "khong"]))
## # A tibble: 4 × 3
## mode max_ic min_ic
## <fct> <int> <int>
## 1 air 70 2
## 2 train 72 2
## 3 bus 60 4
## 4 car 70 2
d %>% group_by(mode) %>% summarise(max_size = max(size[classify = "Poor"]), min_size = min(size[classify = "Rich"]))
## # A tibble: 4 × 3
## mode max_size min_size
## <fct> <int> <int>
## 1 air NA NA
## 2 train NA NA
## 3 bus NA NA
## 4 car NA NA
d %>% group_by(groupic) %>% summarise(max= max(income[cost == "Small"]))
## # A tibble: 4 × 2
## groupic max
## <fct> <int>
## 1 <10 trieu 8
## 2 10-50 trieu 45
## 3 >50 trieu 72
## 4 other 50
d <- d %>% mutate(groupic = fct_relevel(groupic, c("<10 trieu", "10-50 trieu", ">50 trieu", "other")))
pivot <- d %>% select(mode, groupic, income) %>% pivot_wider(values_from = income, names_from = groupic, values_fn = list)
pivot_size <- d %>% select(mode, groupic, size) %>% pivot_wider(names_from = groupic, values_from = size, values_fn = list)
d %>% ggplot(aes(x = income, y = vcost )) +
geom_point(color = "pink") +
geom_smooth(formula = y ~ x, method = "lm", color = "black") + labs(title = " Sự tương quan giữa thu nhập và chi phí phương tiện", x = "Thu nhập", y =" Chi phí phương tiện")
d %>% filter( ncost >250) %>% ggplot(map = aes(x = income, y = ncost), color = mode) + geom_point() +
geom_smooth(formula = y ~ x, method = "lm", color = "black") +
labs(title = " Sự tương quan giữa thu nhập và chi phí cho chuyến đi", x = "Thu nhập", y =" Chi phí cho chuyến đi")
d %>% ggplot(aes(x = vcost, y = wait)) +
geom_point(aes(color = mode), na.rm = T) +
geom_smooth(formula = y ~ x, method = "lm", aes(color = mode)) +
labs(title = " Sự tương quan giữa chi phí phương tiện và thời gian chờ đợi trước khi phương tiện di chuyển", x = "Chi phí phương tiện", y ="Thời gian chờ đợi")
d %>% ggplot(aes(x = income, y = size)) +
geom_point(na.rm = T, aes(shape = mode), size =3, color = "purple" )+
geom_smooth( formula = y ~ x, method = "lm", color = "black") +
labs(title = " Sự tương quan giữa thu nhập và quy mô tổ chức bữa tiệc", x = "thu nhập", y ="quy mô bữa tiệc")
- Nhìn vào biểu đồ trên, ta thấy các điểm phân tán khá đều nhau, tuy
nhiên đường thẳng hồi quy dốc lên cho thấy hai biến này có sự tương quan
thuận với nhau, thu nhập càng cao thì hành khách có xu hướng tổ chức bữa
tiệc với quy mô lớn.
d %>% group_by(mode) %>% summarise(n = n()) %>%
mutate(percent_mode = scales::percent(n/sum(n))) %>%
ggplot(aes(x = mode, y = percent_mode)) +
geom_col(fill ="pink")
d %>% group_by(groupic) %>% summarise(n = n()) %>%
mutate( percent_ic = scales::percent(n/sum(n))) %>%
ggplot(aes(x = groupic, y = percent_ic)) + geom_col(fill = "pink") +
labs(x ="mức thu nhập", y ="tỷ lệ phần trăm")
d %>% group_by(cost) %>% filter(mode == "air") %>%
summarise(n = n()) %>% mutate(percent_cost = scales::percent(n/sum(n))) %>%
ggplot(aes(x= cost, y = percent_cost)) +
geom_col(fill = "purple") + labs(x = 'mức chi phí', y =' tỷ lệ')
d %>% group_by(groupic) %>% filter(classify == "Rich") %>% summarise(n = n()) %>% mutate(percent_gr = scales::percent(n/sum(n))) %>% ggplot(aes(x= groupic, y = percent_gr)) + geom_col(fill="pink") + labs(x = 'mức thu nhập', y =' Số người')
d %>% group_by(cost) %>% summarise(mean_nc = mean(ncost)) %>% ggplot(aes(x = cost, y= mean_nc )) + geom_col(fill = "pink") + geom_text(aes(label = round(mean_nc,2)), vjust = 2, color = "black", size = 5) + labs(x = " mức chi phí", y = "Chi phí trung bình")
d %>% group_by(groupic) %>% add_count(groupic) %>% ggplot(aes(x = groupic, y = n)) + geom_col(aes(fill = mode)) + geom_text(aes(label = scales::percent(n/ sum(n)))) + labs(x = " nhóm thu nhập", y = "số người")
library(tidyverse)
library(AER)
data("TravelMode")
d <- TravelMode
d %>% ggplot(map = aes(x = travel, y = vcost)) +
geom_point()
d %>% ggplot(map = aes(x = income, y = vcost)) +
geom_point()
d %>% ggplot(map = aes(x = travel, y = vcost)) +
geom_point(color= 'pink') + labs(title = "Sự tương quan giữa thời gian di chuyển và chi phí phương tiện", x='Thời gian di chuyển', y='Chi phí phương tiện')
d %>% ggplot(map = aes(x = income, y = vcost)) +
geom_point() + geom_smooth(formula = y ~ x, method = "lm", color = 'purple') + labs(title = "Sự tương quan giữa thu nhập và chi phí phương tiện", x= 'Thu nhập', y= 'Chi phí phương tiện')
TravelMode %>% ggplot(aes(x = income, y = size)) +
geom_smooth(formula = y ~ x, method = 'lm', color = 'purple') +
geom_point(color = 'black') +
labs(title = 'Sự phụ thuộc giữa thu nhập và quy mô bữa tiệc', x = 'Income', y = 'Size')
d %>% ggplot(map= aes(x=wait, y=vcost))+ geom_point(color ='red')+ geom_line(color='black')+ labs(title = 'Sự tương quan giữa thời gian chờ đợi và chi phí phương tiện', x = 'Thời gian chờ đợi phương tiện di chuyển', y= 'Chi phí phương tiện')+ geom_smooth(formula = y ~ x, method = 'lm', color = 'green')
d %>% ggplot(map=aes(x= income, y= vcost, color= mode))+ geom_point() + labs(title = 'Sự tương quan giữa thu nhập và chi phí phương tiện', x='thu nhập', y='chi phí phương tiện') + geom_smooth(formula = y~x, method = 'lm', color= 'black')
d<- d %>% mutate(ncost = vcost + gcost)
d %>% ggplot(map = aes(x= income, y= ncost)) + geom_point(aes(shape = mode ), na.rm = T, color = 'red', size = 3) + geom_smooth(formula = y ~ x,method= 'lm', color='black')+labs(x= 'thu nhập', y= ' tổng chi phí cho chuyến đi')
d %>% ggplot(aes(x = income, y =ncost)) + geom_point(aes(shape = mode), color = 'black', size =3) + geom_point(data = d %>% filter(choice =='yes'), aes(shape = mode), color ='red',size=4)
d %>% filter(mode =='air') %>% ggplot(map = aes(x= income, y= vcost, shape= 'mode', color='pink'))+ geom_point()+ geom_smooth( formula = y ~ x, method = 'lm', color ='red')
d %>% ggplot(map=aes(x=travel,y=vcost))+ geom_point(aes(color=mode))+ geom_smooth(aes(color=mode), formula= y~x, method= 'lm')
d %>% ggplot(map=aes(x=travel,y=vcost))+ geom_point(aes(color=mode))+ geom_smooth(aes(color=mode), formula= y~x, method= 'lm') + facet_grid(.~mode)
d %>% ggplot(map=aes(x=travel,y=vcost))+ geom_point(aes(color=mode))+ geom_smooth(aes(color=mode), formula= y~x, method= 'lm') + facet_grid(mode~.)
d %>% ggplot(map=aes(x=mode)) + geom_bar(fill= 'pink')
d %>% ggplot(aes(x = mode, y = after_stat(count))) +geom_bar(fill = 'yellow') +
geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust =5) +theme_classic() + labs(x = 'phương tiện', y = 'Số người')
d$nincome <- cut(d$income, breaks = c(1,30,50,72), labels = c('ít','vừa','nhiều'))
d %>% ggplot(aes(x = mode, y = after_stat(count))) +geom_bar(fill = 'purple') +
geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust =-0.5) +theme_classic() + facet_grid(. ~ nincome) + labs(x = 'phương tiện', y = 'Số người')
ít, vừa và
nhiều. Sau đó ta phân chia đồ thị theo các nhóm thu nhập
này ứng với các phương tiện di chuyển.d %>% ggplot(aes(x = size, y = after_stat(count))) +geom_bar(fill = 'yellow') +
geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust =3) +theme_classic() + labs(x = 'Quy mô tổ chức bữa tiệc', y = 'Số người')
d %>% ggplot(aes(x = size, y = after_stat(count))) +geom_bar(fill = 'yellow') +
geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', hjust =0.5) +theme_classic() + labs(x = 'Quy mô tổ chức bữa tiệc', y = 'Số người') + coord_flip()
d$ngcost <- cut(d$gcost, breaks = c(25,125,225,300),labels = c('tiết kiệm','vừa đủ','thoải mái'))
d %>% ggplot(aes(x = ngcost, y = after_stat(count),fill = mode)) +
geom_bar(position = 'dodge') + labs(x = 'Mức chi phí chi ra cho chuyến đi', y = 'Số người')
mode(các phương tiện di chuyển). Đọc đồ thị, ta thấy được
đa số số chi phí mọi người chi ra chỉ ở mức tiết kiệm.Ở mức tiết
kiệm, đa số hành khách chọn máy bay làm phương tiện di chuyển (có
lẽ vì mức chi phí chi ra cho phương tiện máy bay cao nên mọi người sẽ có
xu hướng thắt chặt chi tiêu hơn cho chuyến đi). Ở mức vừa đủ,
đa số hành khách chọn tàu là phương tiện di chuyển (vì di chuyển bằng
tàu ít tốn kém hơn, nên mọi người sẽ có xu hướng chi tiêu thoải mái hơn
cho chuyến đi). Còn ở mức thoải mái, không có người nào chọn
máy bay là phương tiện di chuyển mà họ chỉ chọn tàu và xe ô tô (cũng vì
chỉ tốn ít tiền cho phương tiện di chuyển nên hành khách cũng có xu
hướng chi tiêu thoải mái hơn cho chuyến đi).d %>% ggplot(aes(x = gcost, y = after_stat(count),fill = mode)) + geom_bar(position = 'dodge') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))),stat = 'count', color = 'black', vjust =2) + labs(x = 'Mức chi phí chi ra cho chuyến đi', y = 'Số người')
d$nincome <- cut(d$income, breaks = c(1,30,50,72), labels = c('ít','vừa','nhiều'))
d %>% ggplot(aes(x= nincome )) + geom_bar(aes(y= after_stat(count), fill = mode), stat = 'count') + labs(x = 'Mức thu nhập', y = 'Số người')
d %>% ggplot(aes(x= nincome )) + geom_bar(aes(y= after_stat(count), fill = mode), stat = 'count') + labs(x = 'Mức thu nhập', y = 'Số người') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), position = position_stack(vjust = 0.5), stat = 'count', color = 'black', vjust =2)
d$ncost <- d$vcost+d$gcost
d %>% group_by(mode) %>% summarise(a = mean(ncost, na.rm = T)) %>% ggplot(aes(x = mode, y = a)) + geom_col(fill = 'pink') + geom_text(aes(label = round(a,2)), vjust = 2, color = 'black', size = 5) + xlab('Phương tiện di chuyển') + ylab('Chi phí trung bình chung cho chuyến đi')
library(tidyverse)
library(AER)
data("TravelMode")
d <- TravelMode
d %>% group_by(mode) %>% summarise(n= mean(wait))
## # A tibble: 4 × 2
## mode n
## <fct> <dbl>
## 1 air 61.0
## 2 train 35.7
## 3 bus 41.7
## 4 car 0
d %>% group_by(mode) %>% summarise_at(c('vcost','gcost'),list(n=mean))
## # A tibble: 4 × 3
## mode vcost_n gcost_n
## <fct> <dbl> <dbl>
## 1 air 85.3 103.
## 2 train 51.3 130.
## 3 bus 33.5 115.
## 4 car 21.0 95.4
table(d$mode, d$choice)
##
## no yes
## air 152 58
## train 147 63
## bus 180 30
## car 151 59
aggregate(d$income,list(d$size),FUN='mean')
## Group.1 x
## 1 1 31.82456
## 2 2 35.67241
## 3 3 40.45000
## 4 4 38.93333
## 5 5 60.00000
## 6 6 45.00000
aggregate(d$income,list(d$mode),FUN='mean')
## Group.1 x
## 1 air 34.54762
## 2 train 34.54762
## 3 bus 34.54762
## 4 car 34.54762
-Tính trung bình thu nhập của hàng khách theo từng loại phương tiện di chuyển. Ta thấy rằng trung bình thu nhập của hành khách chọn máy bay, tàu, xe bus và xe ô tô đều bằng nhau nên ta kết luận rằng thu nhập không ảnh hưởng đến sự lựa chọn phương thức di chuyển của họ.
aggregate(d$size,list(d$mode),FUN='mean')
## Group.1 x
## 1 air 1.742857
## 2 train 1.742857
## 3 bus 1.742857
## 4 car 1.742857
aggregate(d$wait,list(d$mode),FUN='sd')
## Group.1 x
## 1 air 15.71943
## 2 train 12.27922
## 3 bus 12.07737
## 4 car 0.00000
table(d$mode,d$size)
##
## 1 2 3 4 5 6
## air 114 58 20 15 2 1
## train 114 58 20 15 2 1
## bus 114 58 20 15 2 1
## car 114 58 20 15 2 1
Travl3000 <- d[d$travel>300&d$wait=='0',]
d %>% group_by(mode) %>% summarise(n=mean(travel))
## # A tibble: 4 × 2
## mode n
## <fct> <dbl>
## 1 air 134.
## 2 train 608.
## 3 bus 629.
## 4 car 573.
d %>% group_by(mode) %>% summarise_at(c('wait','vcost'),list(n=mean))
## # A tibble: 4 × 3
## mode wait_n vcost_n
## <fct> <dbl> <dbl>
## 1 air 61.0 85.3
## 2 train 35.7 51.3
## 3 bus 41.7 33.5
## 4 car 0 21.0
d %>% group_by(mode) %>% summarise_if(is.numeric,list(n=mean))
## # A tibble: 4 × 7
## mode wait_n vcost_n travel_n gcost_n income_n size_n
## <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 air 61.0 85.3 134. 103. 34.5 1.74
## 2 train 35.7 51.3 608. 130. 34.5 1.74
## 3 bus 41.7 33.5 629. 115. 34.5 1.74
## 4 car 0 21.0 573. 95.4 34.5 1.74
d %>% group_by(choice) %>% summarise(n=mean(income))
## # A tibble: 2 × 2
## choice n
## <fct> <dbl>
## 1 no 34.5
## 2 yes 34.5
summary(d$wait)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 0.75 35.00 34.59 53.00 99.00
d$nincome <- cut(d$income, breaks = c(1,30,50,73),labels = c('it','vua','nhieu'))
d <- d %>% mutate(nincome = case_when(nincome =="it"~0,nincome =="vua"~1,nincome =="nhieu"~2))
d <- d %>% mutate(cost = vcost + gcost)
Tra <- d %>% select(size, mode, income) %>% pivot_wider(names_from = mode, values_from = income, values_fn = list )
Tra
## # A tibble: 6 × 5
## size air train bus car
## <int> <list> <list> <list> <list>
## 1 1 <int [114]> <int [114]> <int [114]> <int [114]>
## 2 2 <int [58]> <int [58]> <int [58]> <int [58]>
## 3 3 <int [20]> <int [20]> <int [20]> <int [20]>
## 4 4 <int [15]> <int [15]> <int [15]> <int [15]>
## 5 5 <int [2]> <int [2]> <int [2]> <int [2]>
## 6 6 <int [1]> <int [1]> <int [1]> <int [1]>
mode(phương tiện giao thông mà hành khách chọn để đi du
lịch) và mỗi biểu hiện đại diện cho một cột mới của bộ dữ liệu Tra. Giá
trị của bảng dữ liệu này lấy từ dữ liệu của biến income(thu
nhập của những hành khách này) và được tổng hợp theo từng biểu hiện của
biến size(quy mô bữa tiệc mà họ tổ chức). Ta thấy rằng ứng
với mỗi phương tiện di chuyển, quy mô tổ chức bữa tiệc tăng dần nhưng
mức thu nhập nó vẫn không đổi, vậy ta kết luận rằng xu hướng quy mô tổ
chức bữa tiệc và thu nhập không ảnh hưởng đến nhau.Vco <- d %>% select(individual, choice, vcost) %>% pivot_wider(names_from = choice, values_from = vcost, values_fn = list )
choice(lựa
chọn có hoặc không) và mỗi biểu hiện đại diện cho một cột mới của bộ dữ
liệu Vco. Giá trị của bảng dữ liệu này lấy từ dữ liệu của biến
vcost(chi phí di chuyển) và được tổng hợp theo từng biểu
hiện của biến individual(hệ số biểu hiện nhóm người). Ta
đang kiểm tra thử xem chi phí chung của từng phương tiện đối với sự lựa
chọn không và có của hành khách trong chuyến đi tiếp theo có chênh lệch
nhau nhiều hay không. Đọc kết quả của bảng dữ liệu thì ta thấy được đa
số đối với những người chọn không thì do chi phí của họ bỏ ra quá lớn
nên họ sẽ không sẵn sàng bỏ ra số tiền như vậy cho chuyến đi tiếp
theo.d %>% ggplot(map=aes(x= income, y= gcost, color= mode))+ geom_point() + labs(title = 'Sự tương quan giữa thu nhập và chi phí cho chuyến đi', x='thu nhập', y='chi phí cho chuyến đi') + geom_smooth(formula = y~x, method = 'lm', color= 'black')
d %>% ggplot(map = aes(x = income, y = gcost)) +
geom_point() + geom_smooth(formula = y ~ x, method = "lm", color = 'purple') + labs(title = "Sự tương quan giữa thu nhập và chi phí chung", x= 'Thu nhập', y= 'Chi phí chung')
d$ntravel <- cut(d$travel, breaks = c(0,500,1000,1500),labels= c('ngan','vua','dai'))
d %>% ggplot(aes(x = mode, y = after_stat(count))) +geom_bar(fill = 'purple') +
geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust =-0.5) +theme_classic() + facet_grid(. ~ ntravel) + labs(x = 'phương tiện', y = 'count')
d %>% ggplot(map=aes(x=income,y=cost))+ geom_point(aes(color=ntravel))+ geom_smooth(aes(color=ntravel), formula= y~x, method= 'lm') + facet_grid(.~ntravel)
- Phân tích sự ảnh hưởng giữa thu nhập và tổng chi phí cho chuyến đi và
phân loại nó theo từng nhóm thời gian di chuyển. Đối với nhóm người có
thời gian di chuyển ngắn(đa số hành khách chọn máy bay là phương tiện di
chuyển) và nhóm người có thời gian di chuyển vừa thì thu nhập và tổng
chi phí có sự tương quan thuận, thu nhập tăng thì tổng chi phí họ bỏ ra
sẽ tăng. Còn đối với nhóm người có thời gian di chuyển dài thì có sự
tương quan nghịch giữa thu nhập và tổng chi phí, thu nhập tăng thì tổng
chi phí họ bỏ ra cho chuyến đi sẽ giảm.
d$ncost <- cut(d$cost, breaks = c(0,150,250,400),labels= c('thap','vua','cao'))
d %>% ggplot(map=aes(x=travel,y=vcost))+ geom_point(aes(color=ncost))+ geom_smooth(aes(color=ncost), formula= y~x, method= 'lm')
- Ta vẽ đồ thị sự tương quan giữa thời gian di chuyển trên phương tiện
và chi phí phương tiện theo từng mức chi phí. Đọc kết quả đồ thị, ta
thấy được với tất cả mức tổng chi phí thì thời gian di chuyển đều có mối
tương quan nghịch với chi phí cho phương tiện đó.
d %>% ggplot(map=aes(x=choice)) + geom_bar(fill= 'blue')
d %>% ggplot(aes(x = choice, y = after_stat(count))) +geom_bar(fill = 'blue') +
geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust =5) +theme_classic() + labs(x = 'Lựa chọn', y = 'Số người')
- Biều đồ thể hiện 75% số người tham gia khảo sát chọn không và 25% số
người tham gia khảo sát chọn có.
d$nincome <- cut(d$income, breaks = c(1,30,50,72), labels = c('ít','vừa','nhiều'))
d %>% ggplot(aes(x = choice, y = after_stat(count))) +geom_bar(fill = 'blue') +
geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust =-0.5) +theme_classic() + facet_grid(. ~ nincome) + labs(x = 'Lựa chọn', y = 'Số người')
ít, vừa và
nhiều. Sau đó ta phân chia đồ thị theo các nhóm thu nhập
này ứng với lựa chọn không và có của hành khách. Ta thấy đối với mức thu
nhập nào thì lựa chọn không vẫn cao hơn lựa chọn có.library(AER)
library(tidyverse)
library(DT)
data("Fatalities")
Fata <- Fatalities
Fata <- Fata %>% pivot_longer(cols = starts_with('nfatal'), names_to = 'nfatal', values_to = 'nightfatal')
datatable(Fata)
nfatal, nfatal1517, nfatal1820,
nfatal2124 (số vụ tử vong do tai nạn giao thông vào ban đêm
của các độ tuổi từ 15 đến 17, từ 18 đến 20 và từ 21 đến 24 ) thành một
cột dữ liệu và đặt tên cho cột dữ liệu mới này là
nfatal, các giá trị của nfatal đã được đưa vào một cột
mới và cột này được đặt tên là nightfatal.Fata <- Fata %>% pivot_longer(cols = starts_with('fatal'), names_to = 'fatal', values_to = 'nefatal')
datatable(Fata)
fatal, fatal1517, fatal1820,
fatal2124 (số người tử vong do tai nạn giao thông của các
độ tuổi từ 15 đến 17, từ 18 đến 20 và từ 21 đến 24 ) thành một cột dữ
liệu và đặt tên cho cột dữ liệu mới này là fatal, các
giá trị của fatal đã được đưa vào một cột mới và cột này được đặt tên là
nefatal.Fata <- Fata %>% pivot_longer(cols = starts_with('pop'), names_to = 'pop', values_to = 'npop')
datatable(Fata)
pop, pop1517,
pop1820, pop2124 (dân số, dân số từ 15 đến 17
tuổi, dân số từ 18 đến 20 tuổi và dân số từ 21 đến 24 tuổi) thành một
cột dữ liệu và đặt tên cho cột dữ liệu mới này là pop,
các giá trị của fatal đã được đưa vào một cột mới và cột này được đặt
tên là npop.Fata <- Fata %>% mutate(jail = case_when(jail =="no"~0,jail =="yes"~1))
datatable(Fata)
jail(có bắt buộc phải ngồi tù không?) thành 2 biểu hiện, số
0 biểu hiện cho không (no) và số 1 biểu hiện cho có (yes).Fatayear <- Fata %>% select(state,year,jail ) %>% pivot_wider(names_from = year,values_from = jail, values_fn = list)
Fatayear
## # A tibble: 48 × 8
## state `1982` `1983` `1984` `1985` `1986` `1987` `1988`
## <fct> <list> <list> <list> <list> <list> <list> <list>
## 1 al <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 2 az <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 3 ar <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 4 ca <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 5 co <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 6 ct <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 7 de <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 8 fl <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 9 ga <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 10 id <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## # ℹ 38 more rows
jail (có bắt buộc phải ngồi tù hay không, số 0 biểu hiện
cho “không” và số 1 biểu hiện cho “có”) và được tổng hợp theo từng biểu
hiện của biến state(trạng thái chỉ mức độ rượu mạnh mà
người điều khiển giao thông sử dụng).Fatain <- Fata %>% select(state,year,income ) %>% pivot_wider(names_from = year,values_from = income, values_fn = list)
Fatain
## # A tibble: 48 × 8
## state `1982` `1983` `1984` `1985` `1986` `1987` `1988`
## <fct> <list> <list> <list> <list> <list> <list> <list>
## 1 al <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 2 az <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 3 ar <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 4 ca <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 5 co <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 6 ct <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 7 de <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 8 fl <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 9 ga <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## 10 id <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl [64]> <dbl> <dbl>
## # ℹ 38 more rows
year và mỗi biểu hiện đại diện cho một cột mới của
bộ dữ liệu Fatain. Giá trị của bảng dữ liệu này lấy từ dữ liệu của biến
income(thu nhập của từng người tham gia khảo sát) và được
tổng hợp theo từng biểu hiện của biến state(trạng thái chỉ
mức độ rượu mạnh mà người điều khiển giao thông sử dụng).Fata <- Fata %>% mutate(breath = case_when(breath =="no"~0,breath =="yes"~1))
breath(có phải kiểm tra hơi thở hay không?) thành 2 biểu
hiện, số 0 biểu hiện cho không (no) và số 1 biểu hiện cho có (yes).Fatabr <- Fata %>% select(breath,year,jail ) %>% pivot_wider(names_from = year,values_from = jail, values_fn = list)
Fatabr
## # A tibble: 2 × 8
## breath `1982` `1983` `1984` `1985` `1986` `1987` `1988`
## <dbl> <list> <list> <list> <list> <list> <list> <list>
## 1 0 <dbl [1,920]> <dbl [1,664]> <dbl [1,664]> <dbl> <dbl> <dbl> <dbl>
## 2 1 <dbl [1,152]> <dbl [1,408]> <dbl [1,408]> <dbl> <dbl> <dbl> <dbl>
year và mỗi biểu hiện đại diện cho một cột mới của bộ dữ
liệu Fatabr. Giá trị của bảng dữ liệu này lấy từ dữ liệu của biến
jail (có bắt buộc phải ngồi tù hay không, số 0 biểu hiện
cho “không” và số 1 biểu hiện cho “có”) và được tổng hợp theo từng biểu
hiện của biến breath(có phải kiểm tra hơi thở sơ bộ hay
không). Tức là ta đang tổng hợp để xem thử những người bị kiểm tra hơi
thở có phải ngồi tù hay không. ĐỌc kết quả ta thấy rằng những người bị
kiểm tra hơi thở sơ bộ đều phải ngồi tù. (Kết quả của bảng dữ liệu trên
đọc là: Ở năm 1982, có 152 kết quả cho thấy những người bị kiểm tra hơi
thở đều phải ngồi tù, ở năm 1983 có 408 kết quả cho thấy những người bị
kiểm tra hơi thở đều phải ngồi tù,… )library(AER)
data("TravelMode")
Trav <- TravelMode
Trav$nincome <- cut(Trav$income, breaks = c(2,30,50,72),labels = c('it','vua','nhieu'))
Trav <- Trav %>% mutate(nincome = case_when(nincome =="it"~0,nincome =="vua"~1,nincome =="nhieu"~2))
income thành 3 nhóm ít, vừa và nhiều. Sau đó dùng
lệnh mutate để mã hoá các biểu hiện, số 0 biểu hiện cho thu nhập
ít, số 1 biểu hiện cho thu nhập vừa, số 2 biểu
hiện cho thu nhập nhiều.Travin <- Trav %>% select(size, mode, nincome) %>% pivot_wider(names_from = mode, values_from = nincome, values_fn = list )
Travin
## # A tibble: 6 × 5
## size air train bus car
## <int> <list> <list> <list> <list>
## 1 1 <dbl [114]> <dbl [114]> <dbl [114]> <dbl [114]>
## 2 2 <dbl [58]> <dbl [58]> <dbl [58]> <dbl [58]>
## 3 3 <dbl [20]> <dbl [20]> <dbl [20]> <dbl [20]>
## 4 4 <dbl [15]> <dbl [15]> <dbl [15]> <dbl [15]>
## 5 5 <dbl [2]> <dbl [2]> <dbl [2]> <dbl [2]>
## 6 6 <dbl [1]> <dbl [1]> <dbl [1]> <dbl [1]>
mode(phương tiện giao thông mà hành khách chọn để đi du
lịch) và mỗi biểu hiện đại diện cho một cột mới của bộ dữ liệu Travin.
Giá trị của bảng dữ liệu này lấy từ dữ liệu của biến
income(thu nhập của những hành khách này) và được tổng hợp
theo từng biểu hiện của biến size(quy mô bữa tiệc mà họ tổ
chức). Tuần trước, bằng cách thống kê trung bình ta đã phân tích được
rằng thu nhập không ảnh hưởng đến sự lựa chọn phương thức di chuyển của
các hành khách, và kết quả của bảng dữ liệu trên ta có thể thấy được mức
thu nhập ít, vừa và nhiều nó phân bố đều trong các phương thức di chuyển
nên ta vẫn kết luận rằng thu nhập nó không ảnh hưởng đến sự lựa chọn
phương thức di chuyển của các hành khách.Travcos <- Trav %>% select(individual, mode, vcost) %>% pivot_wider(names_from = mode, values_from = vcost, values_fn = list )
Travcos
## # A tibble: 210 × 5
## individual air train bus car
## <fct> <list> <list> <list> <list>
## 1 1 <int [1]> <int [1]> <int [1]> <int [1]>
## 2 2 <int [1]> <int [1]> <int [1]> <int [1]>
## 3 3 <int [1]> <int [1]> <int [1]> <int [1]>
## 4 4 <int [1]> <int [1]> <int [1]> <int [1]>
## 5 5 <int [1]> <int [1]> <int [1]> <int [1]>
## 6 6 <int [1]> <int [1]> <int [1]> <int [1]>
## 7 7 <int [1]> <int [1]> <int [1]> <int [1]>
## 8 8 <int [1]> <int [1]> <int [1]> <int [1]>
## 9 9 <int [1]> <int [1]> <int [1]> <int [1]>
## 10 10 <int [1]> <int [1]> <int [1]> <int [1]>
## # ℹ 200 more rows
mode(phương tiện giao thông mà hành khách chọn để đi du
lịch) và mỗi biểu hiện đại diện cho một cột mới của bộ dữ liệu Travcos.
Giá trị của bảng dữ liệu này lấy từ dữ liệu của biến
vcost(chi phí chung cho chuyến du lịch này) và được tổng
hợp theo từng biểu hiện của biến individual( biểu hiện của
từng nhóm người). Ta đang kiểm tra thử xem chi phí chung của từng phương
tiện có chênh lệch nhau nhiều hay không. Đọc kết quả của bảng dữ liệu
thì ta thấy được chi phí khi di chuyển bằng máy bay ở tất cả các người
khảo sát đều cao hơn so với các phương tiện khác(ô tô, tàu, xe bus), còn
chi phí của ô tô, tàu và xe bus chênh lệch nhau không nhiều.library(ggplot2)
data("TravelMode")
a <- TravelMode
### Đồ thị dạng Scatter
TravelMode %>% ggplot(aes(x= vcost, y= size)) + geom_point() + theme_minimal() +
labs(subtitle = " Sự phụ thuộc giữa quy mô tổ chức bữa tiệc và chi phí chung cho chuyến đi")
TravelMode %>% ggplot(aes(x = wait, y = gcost, color = mode)) + geom_smooth(formula = y ~ x, method = 'lm', color = 'purple') +geom_point(na.rm = T) + labs(title = 'Sự phụ thuộc giữa thời gian chờ đợi trước khi phương tiện di chuyển và chi phí phương tiện', x = 'Gcost', y = 'Wait')
air) ở mức cao
nhất, chi phí cho phương tiện là xe ô tô (car) ở mức thấp
nhất, còn chi phí cho tàu (train) và xe bus
(bus) nó sẽ phân bố đều ở các mức.a %>% ggplot(aes(x= vcost )) +
geom_bar( fill = 'pink')
library(scales)
a %>% ggplot(aes(x = mode, y = after_stat(count))) +
geom_bar(fill = 'pink') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = 2) +theme_classic() + labs(x = 'Phương tiện di chuyển', y = 'Số người')
library(AER)
data("TravelMode")
d <-TravelMode
names(d) <- c('I','M','C','W','V','T','G','IN','S')
air <- d[d$M=='air',]
Travl3000 <- d[d$T>300&d$W=='0',]
d$Traveltime <- cut(d$T, breaks = c(63,400,700,1000,1440),labels = c('ngắn','vừa','dài','siêu dài'))
d$Cost <- cut(d$G, breaks = c(25,125,225,300),labels = c('tiết kiệm','vừa đủ','thoải mái'))
summary(d$IN)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.00 20.00 34.50 34.55 50.00 72.00
quantile(d$IN,0.35)
## 35%
## 26
quantile(d$G,0.5)
## 50%
## 101.5
aggregate(d$IN,list(d$M),FUN='mean')
## Group.1 x
## 1 air 34.54762
## 2 train 34.54762
## 3 bus 34.54762
## 4 car 34.54762
aggregate(d$IN,list(d$S),FUN='mean')
## Group.1 x
## 1 1 31.82456
## 2 2 35.67241
## 3 3 40.45000
## 4 4 38.93333
## 5 5 60.00000
## 6 6 45.00000
var(d$V)
## [1] 1047.882
sd(d$V)
## [1] 32.371
install.packages("tidyverse", repos = "https://cloud.r-project.org")
## Warning: package 'tidyverse' is in use and will not be installed
library(tidyverse)
TravelMode %>% group_by(mode) %>% summarise(n=mean(travel))
## # A tibble: 4 × 2
## mode n
## <fct> <dbl>
## 1 air 134.
## 2 train 608.
## 3 bus 629.
## 4 car 573.
TravelMode %>% group_by(mode) %>% summarise_at(c('wait','vcost'),list(n=mean))
## # A tibble: 4 × 3
## mode wait_n vcost_n
## <fct> <dbl> <dbl>
## 1 air 61.0 85.3
## 2 train 35.7 51.3
## 3 bus 41.7 33.5
## 4 car 0 21.0
TravelMode %>% group_by(mode) %>% summarise_if(is.numeric,list(n=mean))
## # A tibble: 4 × 7
## mode wait_n vcost_n travel_n gcost_n income_n size_n
## <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 air 61.0 85.3 134. 103. 34.5 1.74
## 2 train 35.7 51.3 608. 130. 34.5 1.74
## 3 bus 41.7 33.5 629. 115. 34.5 1.74
## 4 car 0 21.0 573. 95.4 34.5 1.74
is.data.frame(TravelMode)
## [1] TRUE
is.vector(TravelMode)
## [1] FALSE
is.vector(TravelMode$mode)
## [1] FALSE
is.vector(TravelMode$wait)
## [1] TRUE
A1 <- d$G
is.vector(A1)
## [1] TRUE
A1 <- as.data.frame(A1)
B1 <- seq(1,1,length=10)
A1$B1 <- B1
A2 <- d$V
is.vector(A2)
## [1] TRUE
A2 <- as.data.frame(A2)
B2 <- seq(1,1, length=10)
A2$B2 <- B2
A <- left_join(A1,A2, by = c("B1"="B2"), relationship ='many-to-many')
library(AER)
# Lấy dữ liệu của datashet TravelMode
data("TravelMode")
# Gán dữ liệu của TravelMode cho biến d
d <- TravelMode
# Mô tả chi tiết kiểu biến số của datashet TravelMode
str(d)
## 'data.frame': 840 obs. of 9 variables:
## $ individual: Factor w/ 210 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
## $ mode : Factor w/ 4 levels "air","train",..: 1 2 3 4 1 2 3 4 1 2 ...
## $ choice : Factor w/ 2 levels "no","yes": 1 1 1 2 1 1 1 2 1 1 ...
## $ wait : int 69 34 35 0 64 44 53 0 69 34 ...
## $ vcost : int 59 31 25 10 58 31 25 11 115 98 ...
## $ travel : int 100 372 417 180 68 354 399 255 125 892 ...
## $ gcost : int 70 71 70 30 68 84 85 50 129 195 ...
## $ income : int 35 35 35 35 30 30 30 30 40 40 ...
## $ size : int 1 1 1 1 2 2 2 2 1 1 ...
# Lấy dữ liệu của 6 dòng đầu của biến d
head(d)
## individual mode choice wait vcost travel gcost income size
## 1 1 air no 69 59 100 70 35 1
## 2 1 train no 34 31 372 71 35 1
## 3 1 bus no 35 25 417 70 35 1
## 4 1 car yes 0 10 180 30 35 1
## 5 2 air no 64 58 68 68 30 2
## 6 2 train no 44 31 354 84 30 2
# Gán tên viết tắt cho các biến để dễ thao tác
names(d) <- c('I','M','C','W','V','T','G','IN','S')
# Lấy dữ liệu của biến V
Vco <- d$V
# Chi phí phương tiện lớn hơn 50
Vco50 <- Vco[Vco>50]
# Chi phí phương tiện lớn hơn 30 và nhỏ hơn 100
Vco30100 <- Vco[Vco>30&Vco<100]
# Lấy dữ liệu của biến T
Tra <- d$T
# Lấy dữ liệu của biến G
Gco <- d$G
#Xem dữ liệu thứ 10 của biến G
Gco[10]
## [1] 195
# Tổng giá trị của V,T và G
tongTVG <- d$T+d$V+d$G
tongTVG
## [1] 229 474 512 220 194 469 509 316 369 1185 1084 844 176 459 501
## [16] 217 286 529 569 707 229 422 488 339 423 1269 1168 982 410 1090
## [31] 1075 965 229 474 512 267 191 457 495 247 194 443 488 250 249
## [46] 494 534 300 222 483 525 286 224 476 516 358 361 1232 1174 1416
## [61] 260 399 532 416 204 359 483 375 229 375 481 397 282 374 533
## [76] 505 223 408 449 382 203 380 468 374 395 626 751 670 400 803
## [91] 718 706 362 801 716 706 242 431 474 346 331 1249 1148 1211 272
## [106] 848 763 722 331 842 828 720 354 454 440 388 229 338 488 341
## [121] 230 367 515 355 227 424 507 399 202 392 507 380 198 389 478
## [136] 374 267 395 466 367 250 406 521 374 336 463 590 514 177 367
## [151] 480 367 273 465 560 412 405 943 859 753 372 801 716 688 409
## [166] 811 726 699 432 870 785 755 321 857 772 699 342 787 772 689
## [181] 423 874 790 744 295 825 740 691 223 466 504 373 236 428 474
## [196] 371 348 943 859 755 307 929 844 764 308 877 829 692 256 453
## [211] 526 394 220 436 530 403 174 378 481 372 404 1032 1071 1080 496
## [226] 1031 1153 1174 389 1044 1101 1029 397 994 1077 1055 313 1049 1053 1017
## [241] 427 1078 1107 1137 623 1058 1129 1137 374 1080 1172 1060 359 931 996
## [256] 1010 421 967 1102 1045 349 1202 936 1083 483 1474 1372 1158 412 1190
## [271] 1020 1063 370 1058 1152 1054 423 1031 1102 1072 437 508 1187 1087 341
## [286] 903 1061 1030 481 966 1274 1166 430 972 1024 1108 432 1143 1136 1058
## [301] 373 1113 1113 1130 344 1047 1020 1031 413 1194 1178 881 321 1184 1134
## [316] 1678 396 1181 956 1044 468 1202 1240 1089 203 454 456 217 226 377
## [331] 483 402 245 494 519 387 291 825 740 697 194 390 500 383 254
## [346] 436 441 286 202 374 493 392 254 466 465 317 205 382 500 383
## [361] 195 395 437 372 253 437 523 432 292 826 741 445 393 457 497
## [376] 367 357 1251 1149 1059 367 928 843 746 284 487 395 414 537 1270
## [391] 1169 1071 454 1251 1343 1111 418 1261 1187 932 241 479 449 435 327
## [406] 1165 1115 855 225 437 481 359 396 1188 1087 1148 431 1253 1152 1698
## [421] 406 1262 937 1082 416 1177 1076 866 324 1172 1114 1024 286 529 569
## [436] 327 358 1207 1149 853 254 486 524 290 447 1268 1166 867 308 460
## [451] 500 377 220 647 687 479 265 520 558 323 248 474 512 399 189
## [466] 455 308 381 463 1168 1017 1067 407 1184 1083 1006 235 457 495 384
## [481] 265 431 477 348 508 1219 1118 995 404 1223 1122 1127 369 1161 1146
## [496] 1036 405 1278 824 1076 402 1199 957 1078 365 1269 1196 1028 376 1172
## [511] 970 1044 236 474 512 359 259 507 518 435 391 1191 1090 764 337
## [526] 1161 1088 792 433 1254 1106 1077 371 1079 859 1052 390 1315 1213 828
## [541] 413 1308 1292 867 380 1195 1094 903 387 1194 1072 1080 316 1139 957
## [556] 985 287 1148 1075 715 390 987 1089 1054 497 1070 1088 1056 416 1093
## [571] 1205 1081 376 1006 1125 1044 402 926 1061 1039 390 949 1013 1052 383
## [586] 903 1066 1033 395 923 1151 1072 477 1116 1172 1149 487 1197 1096 1065
## [601] 403 1096 1081 1078 481 1329 1189 1162 596 1266 1164 1146 449 1178 1077
## [616] 1046 258 476 516 400 229 468 509 371 537 1310 1168 1143 380 1334
## [631] 1233 1180 275 505 545 396 246 547 589 345 240 442 480 366 293
## [646] 473 511 376 321 1018 957 563 297 884 836 661 295 837 777 603
## [661] 316 916 831 731 308 821 772 634 286 839 801 551 267 816 731
## [676] 548 309 876 815 700 347 1023 938 590 203 454 304 376 267 502
## [691] 308 417 311 850 713 701 248 504 542 234 528 1347 1023 1201 215
## [706] 461 369 357 244 493 311 396 242 837 752 726 301 463 503 383
## [721] 209 496 534 357 252 490 528 327 205 525 510 389 376 565 473
## [736] 388 201 382 496 377 279 827 778 697 183 431 474 375 214 451
## [751] 493 370 229 474 512 259 197 421 420 302 328 541 546 285 280
## [766] 470 508 367 257 447 485 375 419 879 591 752 169 336 483 381
## [781] 223 423 424 376 222 461 498 319 338 803 718 694 220 461 501
## [796] 349 218 484 526 394 410 1102 1009 955 312 852 768 657 245 451
## [811] 438 405 193 458 351 366 374 1152 929 1036 299 809 724 858 402
## [826] 801 716 704 213 429 351 359 299 740 726 619 293 880 831 646
#Phân tổ dữ liệu cho biến thu nhập(income), phân tổ thành 4 tổ
Inc <- d$IN
cut(Inc,4)
## [1] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [7] (19.5,37] (19.5,37] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [13] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (37,54.5] (37,54.5]
## [19] (37,54.5] (37,54.5] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [25] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (1.93,19.5] (1.93,19.5]
## [31] (1.93,19.5] (1.93,19.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [37] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (1.93,19.5] (1.93,19.5]
## [43] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [49] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [55] (37,54.5] (37,54.5] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [61] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [67] (19.5,37] (19.5,37] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [73] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (54.5,72.1] (54.5,72.1]
## [79] (54.5,72.1] (54.5,72.1] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [85] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (37,54.5] (37,54.5]
## [91] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [97] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (54.5,72.1] (54.5,72.1]
## [103] (54.5,72.1] (54.5,72.1] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [109] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [115] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [121] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (37,54.5] (37,54.5]
## [127] (37,54.5] (37,54.5] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [133] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (37,54.5] (37,54.5]
## [139] (37,54.5] (37,54.5] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [145] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (1.93,19.5] (1.93,19.5]
## [151] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [157] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [163] (19.5,37] (19.5,37] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [169] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (37,54.5] (37,54.5]
## [175] (37,54.5] (37,54.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [181] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (19.5,37] (19.5,37]
## [187] (19.5,37] (19.5,37] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [193] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37]
## [199] (19.5,37] (19.5,37] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [205] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [211] (19.5,37] (19.5,37] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [217] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37]
## [223] (19.5,37] (19.5,37] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [229] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [235] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [241] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [247] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [253] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [259] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [265] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [271] (19.5,37] (19.5,37] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [277] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (1.93,19.5] (1.93,19.5]
## [283] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [289] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [295] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [301] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37]
## [307] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [313] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (19.5,37] (19.5,37]
## [319] (19.5,37] (19.5,37] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [325] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (1.93,19.5] (1.93,19.5]
## [331] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [337] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [343] (54.5,72.1] (54.5,72.1] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [349] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37]
## [355] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [361] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (1.93,19.5] (1.93,19.5]
## [367] (1.93,19.5] (1.93,19.5] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [373] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [379] (37,54.5] (37,54.5] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [385] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37]
## [391] (19.5,37] (19.5,37] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [397] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (19.5,37] (19.5,37]
## [403] (19.5,37] (19.5,37] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [409] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [415] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [421] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [427] (19.5,37] (19.5,37] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [433] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (37,54.5] (37,54.5]
## [439] (37,54.5] (37,54.5] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [445] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (19.5,37] (19.5,37]
## [451] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [457] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (37,54.5] (37,54.5]
## [463] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [469] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37]
## [475] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [481] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [487] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [493] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37]
## [499] (19.5,37] (19.5,37] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [505] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (19.5,37] (19.5,37]
## [511] (19.5,37] (19.5,37] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [517] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (37,54.5] (37,54.5]
## [523] (37,54.5] (37,54.5] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [529] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (1.93,19.5] (1.93,19.5]
## [535] (1.93,19.5] (1.93,19.5] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [541] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (37,54.5] (37,54.5]
## [547] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [553] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [559] (19.5,37] (19.5,37] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [565] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [571] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [577] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (1.93,19.5] (1.93,19.5]
## [583] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [589] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [595] (37,54.5] (37,54.5] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [601] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (37,54.5] (37,54.5]
## [607] (37,54.5] (37,54.5] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [613] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (37,54.5] (37,54.5]
## [619] (37,54.5] (37,54.5] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [625] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [631] (54.5,72.1] (54.5,72.1] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [637] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (54.5,72.1] (54.5,72.1]
## [643] (54.5,72.1] (54.5,72.1] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [649] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (54.5,72.1] (54.5,72.1]
## [655] (54.5,72.1] (54.5,72.1] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [661] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (37,54.5] (37,54.5]
## [667] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [673] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (37,54.5] (37,54.5]
## [679] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [685] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [691] (19.5,37] (19.5,37] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [697] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [703] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [709] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [715] (37,54.5] (37,54.5] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## [721] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [727] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [733] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37]
## [739] (19.5,37] (19.5,37] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [745] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37]
## [751] (19.5,37] (19.5,37] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [757] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (1.93,19.5] (1.93,19.5]
## [763] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [769] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (1.93,19.5] (1.93,19.5]
## [775] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5]
## [781] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37]
## [787] (19.5,37] (19.5,37] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [793] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1] (37,54.5] (37,54.5]
## [799] (37,54.5] (37,54.5] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [805] (19.5,37] (19.5,37] (19.5,37] (19.5,37] (1.93,19.5] (1.93,19.5]
## [811] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37] (19.5,37] (19.5,37]
## [817] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [823] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5] (37,54.5]
## [829] (1.93,19.5] (1.93,19.5] (1.93,19.5] (1.93,19.5] (19.5,37] (19.5,37]
## [835] (19.5,37] (19.5,37] (54.5,72.1] (54.5,72.1] (54.5,72.1] (54.5,72.1]
## Levels: (1.93,19.5] (19.5,37] (37,54.5] (54.5,72.1]
table(cut(Inc,4))
##
## (1.93,19.5] (19.5,37] (37,54.5] (54.5,72.1]
## 204 284 196 156
#Phân tổ dữ liệu cho biến Choice
Choi <- d$C
table(Choi)
## Choi
## no yes
## 630 210