Nhiệm vụ 2.1 tiến hành thao tác 1 số lệnh cơ bản trên dataset “bwt_co_dieu_chinh.xlsx”, là dataset thống kê các thuộc tính của phụ nữ khi mang thai ở 8 khu vực khác nhau và được ghi nhận từ năm 1925 - 2004.
Các cột lần lượt là:
id: Khu vực (có 8 khu vực).
year: Năm lấy số liệu.
bwt: Trọng lượng lúc sinh (tính bằng ounces, 1 ounce = 28.3495 gram).
gestation: Thời gian mang thai (tính bằng ngày).
parity: Số lần sinh (có hai giá trị, 1 = sinh lần đầu, 0 = không phải lần đầu).
age: Tuổi của mẹ.
height: Chiều cao của mẹ (tính bằng inches, 1 inch = 2.54 cm).
weight: Cân nặng của bà mẹ khi mang thai (tính bằng pounds, 1 pound = 0.453592 kg).
smoke: Hút thuốc lúc mang thai (1 = có, 0 = không).
library(xlsx)
h <- read.xlsx("C:/Users/Dell/Downloads/bwt_co_dieu_chinh.xlsx", sheetIndex = 1, header = 1) #đọc dữ liệu từ excel và gán vào object h
is.data.frame(h) #kiểm tra xem "h" có phải là data frame hay không, nếu đúng thì true và ngược lại
## [1] TRUE
length(h) #cho ra số cột của "h"
## [1] 9
names(h) #cho ra các tên cột của "h"
## [1] "id" "year" "bwt" "gestation" "parity" "age"
## [7] "height" "weight" "smoke"
dim(h) #cho ra số hàng và số cột của "h"
## [1] 640 9
sum(is.na(h)) #tổng số ô trống của object h
## [1] 0
Thực hiện thống kê mô tả dataset này ta được kết quả bên dưới, ý nghĩa các cột như sau:
n_missing: số ô dữ liệu bị miss(trống)
complete_rate: tỷ lệ ô có dữ liệu
mean: trung bình
sd: độ lệch chuẩn
p0: giá trị nhỏ nhất
p25: Phân vị thứ nhất
p50: Phân vị thứ hai cũng chính là trung vị
p75: phân vị thứ ba
p100: giá trị lớn nhất
hist: biểu đồ Histogram
library(skimr)
skim(h)
| Name | h |
| Number of rows | 640 |
| Number of columns | 9 |
| _______________________ | |
| Column type frequency: | |
| numeric | 9 |
| ________________________ | |
| Group variables | None |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| id | 0 | 1 | 4.50 | 2.29 | 1 | 2.75 | 4.5 | 6.25 | 8 | ▇▃▇▃▇ |
| year | 0 | 1 | 1964.50 | 23.11 | 1925 | 1944.75 | 1964.5 | 1984.25 | 2004 | ▇▇▇▇▇ |
| bwt | 0 | 1 | 118.89 | 18.14 | 55 | 107.75 | 120.0 | 131.00 | 169 | ▁▂▇▆▁ |
| gestation | 0 | 1 | 279.33 | 15.80 | 181 | 273.00 | 280.0 | 288.00 | 351 | ▁▁▇▅▁ |
| parity | 0 | 1 | 0.31 | 0.46 | 0 | 0.00 | 0.0 | 1.00 | 1 | ▇▁▁▁▃ |
| age | 0 | 1 | 27.28 | 5.86 | 15 | 23.00 | 26.0 | 31.00 | 45 | ▃▇▅▂▁ |
| height | 0 | 1 | 64.10 | 2.50 | 53 | 62.00 | 64.0 | 66.00 | 71 | ▁▁▅▇▁ |
| weight | 0 | 1 | 128.22 | 19.49 | 87 | 115.00 | 126.0 | 137.00 | 217 | ▃▇▃▁▁ |
| smoke | 0 | 1 | 0.40 | 0.49 | 0 | 0.00 | 0.0 | 1.00 | 1 | ▇▁▁▁▆ |
# lấy 20 dòng đầu
head(h,20)
## id year bwt gestation parity age height weight smoke
## 1 1 1925 120 284 0 27 62 100 0
## 2 2 1925 112 267 1 22 62 138 0
## 3 3 1925 119 286 0 26 64 123 1
## 4 4 1925 124 287 0 27 62 105 1
## 5 5 1925 105 276 0 22 67 130 0
## 6 6 1925 120 289 1 31 59 102 0
## 7 7 1925 82 274 0 31 64 101 1
## 8 8 1925 111 278 0 29 65 145 1
## 9 1 1926 113 282 0 33 64 135 0
## 10 2 1926 134 297 0 27 67 170 1
## 11 3 1926 97 279 0 29 68 178 1
## 12 4 1926 125 292 0 22 65 122 0
## 13 5 1926 93 246 0 37 65 130 0
## 14 6 1926 146 280 0 23 61 145 0
## 15 7 1926 100 274 0 24 63 113 0
## 16 8 1926 103 250 0 40 59 140 0
## 17 1 1927 128 279 0 28 64 115 1
## 18 2 1927 145 308 0 35 64 110 1
## 19 3 1927 99 252 0 21 64 120 0
## 20 4 1927 110 262 0 25 66 140 0
# lấy 10 dòng cuối
tail(h,20)
## id year bwt gestation parity age height weight smoke
## 621 5 2002 120 276 0 23 66 114 0
## 622 6 2002 129 288 0 28 59 102 0
## 623 7 2002 137 280 0 34 60 107 0
## 624 8 2002 135 289 0 25 64 127 0
## 625 1 2003 129 280 0 23 64 104 0
## 626 2 2003 158 295 1 37 70 137 0
## 627 3 2003 78 258 1 24 66 115 1
## 628 4 2003 133 292 0 30 65 112 1
## 629 5 2003 140 251 0 28 63 210 0
## 630 6 2003 114 286 1 22 64 116 1
## 631 7 2003 100 264 0 29 64 120 1
## 632 8 2003 123 277 0 24 66 122 0
## 633 1 2004 139 292 0 25 68 135 0
## 634 2 2004 112 275 1 21 68 143 1
## 635 3 2004 114 289 0 36 60 115 0
## 636 4 2004 110 277 0 25 61 130 0
## 637 5 2004 120 271 1 17 64 142 1
## 638 6 2004 110 280 0 29 62 110 1
## 639 7 2004 160 271 0 32 67 215 0
## 640 8 2004 100 281 0 24 61 115 0
# Đặt lại tên cho các cột của objec "h" để thuận tiện thao tác hơn
names(h) <- c("i","y","b","g","p","a","he","w","s")
names(h)
## [1] "i" "y" "b" "g" "p" "a" "he" "w" "s"
## Gán h1 là giá trị của hàng 5 cột 6
h1 <- h[5,6]
str(h1)
## num 22
## Gán h2 là giá trị 5 hàng đầu tiên của cột "b"
h2 <- h[1:5,3]
str(h2)
## num [1:5] 120 112 119 124 105
## Gán h3 là giá trị các hàng 1,3,5,7 của cột "g" và "p"
h3 <- h[c(1,3,5,7),c(4,5)]
str(h3)
## 'data.frame': 4 obs. of 2 variables:
## $ g: num 284 286 276 274
## $ p: num 0 0 0 0
## Gán h4 là những hàng có giá trị là khu vực 5
h4 <- h[h$i==5,]
str(h4)
## 'data.frame': 80 obs. of 9 variables:
## $ i : num 5 5 5 5 5 5 5 5 5 5 ...
## $ y : num 1925 1926 1927 1928 1929 ...
## $ b : num 105 93 122 133 130 104 106 120 118 140 ...
## $ g : num 276 246 281 293 296 307 278 281 276 290 ...
## $ p : num 0 0 0 0 1 0 0 0 1 1 ...
## $ a : num 22 37 42 23 22 24 31 33 18 19 ...
## $ he: num 67 65 63 64 66 59 65 63 63 67 ...
## $ w : num 130 130 103 110 117 122 110 113 128 132 ...
## $ s : num 0 0 1 1 1 0 1 0 0 1 ...
## Gán h5 là những hàng có năm 1930 -> 1935
h5 <- h[h$y >= 1930 & h$y <= 1935,]
str(h5)
## 'data.frame': 48 obs. of 9 variables:
## $ i : num 1 2 3 4 5 6 7 8 1 2 ...
## $ y : num 1930 1930 1930 1930 1930 ...
## $ b : num 138 111 144 142 104 122 122 94 132 126 ...
## $ g : num 244 285 304 284 307 275 275 271 245 282 ...
## $ p : num 0 0 1 0 0 0 1 0 0 0 ...
## $ a : num 33 29 27 39 24 30 20 36 23 33 ...
## $ he: num 62 65 58 66 59 68 65 61 65 62 ...
## $ w : num 178 130 102 132 122 140 127 130 140 117 ...
## $ s : num 0 0 1 0 0 0 0 1 0 0 ...
## Gán h6 là những hàng sinh lần đầu hoặc không hút thuốc khi mang thai
h6 <- h[h$p == 1 | h$s == 0,]
str(h6)
## 'data.frame': 461 obs. of 9 variables:
## $ i : num 1 2 5 6 1 4 5 6 7 8 ...
## $ y : num 1925 1925 1925 1925 1926 ...
## $ b : num 120 112 105 120 113 125 93 146 100 103 ...
## $ g : num 284 267 276 289 282 292 246 280 274 250 ...
## $ p : num 0 1 0 1 0 0 0 0 0 0 ...
## $ a : num 27 22 22 31 33 22 37 23 24 40 ...
## $ he: num 62 62 67 59 64 65 65 61 63 59 ...
## $ w : num 100 138 130 102 135 122 130 145 113 140 ...
## $ s : num 0 0 0 0 0 0 0 0 0 0 ...
# Rút trích dữ liệu với filter và select
k1 <- filter(h, h$he > 60 & h$w > 130) #chọn những hàng chỉ đáp ứng điều kiện cao hơn 60inch và nặng hơn 130 pound
str(k1)
## Time-Series [1:640, 1:9] from 1 to 640: NA NA NA NA NA NA NA NA NA NA ...
library(dplyr)
##
## 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
k2 <- select(h,i,he,w) #chỉ lấy những cột khu vực, chiều cao và cân nặng trong object "h"
str(k2)
## 'data.frame': 640 obs. of 3 variables:
## $ i : num 1 2 3 4 5 6 7 8 1 2 ...
## $ he: num 62 62 64 62 67 59 64 65 64 67 ...
## $ w : num 100 138 123 105 130 102 101 145 135 170 ...
k3 <- filter(h,a > 20 & w > 120) %>% select(i,a,he,w) #chỉ lấy những cột khu vực, tuổi, chiều cao, cân nặng và phải đáp ứng điều kiện có tuổi cao hơn 25 và cân nặng hơn 150 pound
str(k3)
## 'data.frame': 356 obs. of 4 variables:
## $ i : num 2 3 5 8 1 2 3 4 5 6 ...
## $ a : num 22 26 22 29 33 27 29 22 37 23 ...
## $ he: num 62 64 67 65 64 67 68 65 65 61 ...
## $ w : num 138 123 130 145 135 170 178 122 130 145 ...
Ta tiến hành thực hành các lệnh để thêm 1 số biến mới từ dữ liệu cũ, như kết quả bên dưới ta đã tạo ra object mới là tinh với các dữ liệu cũ của h và thêm 5 biến mới là:
cm: Là chiều cao với đơn vị là cm
kg: là cân nặng với đơn vị là kg
bmi: là chỉ số bmi được tính từ cm và kg
tieuchuan: đánh giá mức độ cân nặng phù hợp theo tiêu chuẩn bmi
## thêm cột chiều cao với đơn vị là cm, cân nặng với đơn vị là kg và cột chỉ số bmi: cột cm được tính bằng cột he nhân cho 2.54, tương tự các cột sau
tinh <- mutate(h, cm = he*2.54)
tinh <- mutate(tinh,kg=w*0.453592)
tinh <- mutate(tinh,bmi=kg/((cm/100)^2))
str(tinh)
## 'data.frame': 640 obs. of 12 variables:
## $ i : num 1 2 3 4 5 6 7 8 1 2 ...
## $ y : num 1925 1925 1925 1925 1925 ...
## $ b : num 120 112 119 124 105 120 82 111 113 134 ...
## $ g : num 284 267 286 287 276 289 274 278 282 297 ...
## $ p : num 0 1 0 0 0 1 0 0 0 0 ...
## $ a : num 27 22 26 27 22 31 31 29 33 27 ...
## $ he : num 62 62 64 62 67 59 64 65 64 67 ...
## $ w : num 100 138 123 105 130 102 101 145 135 170 ...
## $ s : num 0 0 1 1 0 0 1 1 0 1 ...
## $ cm : num 157 157 163 157 170 ...
## $ kg : num 45.4 62.6 55.8 47.6 59 ...
## $ bmi: num 18.3 25.2 21.1 19.2 20.4 ...
Nhiệm vụ 2.2 thực hành những thao tác về bộ dữ liệu Billionaires Statistics Dataset, là bộ dữ liệu thống kê về một số điểm nổi bật của các tỷ phú trên thế giới tính đến năm 2023. Chi tiết các biến trong bộ dữ liệu như sau:
Rank: Thứ hạng của tỷ phú xét về mức độ giàu có.
FinalWorth: Giá trị ròng cuối cùng của tỷ phú tính bằng đô la Mỹ.
personName: Tên đầy đủ của tỷ phú.
age: Tuổi của tỷ phú.
country: Quốc gia nơi tỷ phú cư trú.
source: Nguồn gốc sự giàu có của tỷ phú.
industries: Các ngành nghề gắn liền với lợi ích kinh doanh của tỷ phú.
countryOfCitizenship: Quốc tịch của tỷ phú.
selfMade: Cho biết tỷ phú có phải là người tự lập hay không (Đúng/Sai).
status: “D” đại diện cho tỷ phú tự thân (Người sáng lập/Doanh nhân) và “U” biểu thị tài sản được thừa kế hoặc không kiếm được.
gender: Giới tính của tỷ phú(M là nam, F là nữ)
title: Chức vụ của tỷ phú
life_expectancy_country: Tuổi thọ ở đất nước tỷ phú.
tax_revenue_country_country: Doanh thu thuế ở quốc gia của tỷ phú.
Đầu tiên, ta gán object a là dataset Billionaires Statistics Dataset, sau đó tiến hành thực hiện lệnh thống kê object a, ta được kết quả như sau:
a có 2640 hàng và 14 cột
Có 8 biến ký tự, 1 biến logic và 5 biến định dạng số
Các đặc điểm nổi bật của thống kê về các biến ký tự:
Biến country có 38 dữ liệu bị miss chiếm tỷ lệ 0,01 và biến title bị miss 2301 dữ liệu chiếm tỷ lệ 0,87.
Số ký tự trong 1 ô nhiều nhất là 60 ký tự(nằm ở cột title) và ít nhất là 1 ký tự(nằm ở cột status và gender)
n_unique: Số lượng giá trị duy nhất riêng biệt trong mỗi biến, như ở đây ta có được biến personName có nhiều dữ liệu riêng biệt nhất với 2638 quan sát riêng biệt.
Biến sefMade với định dạng dữ liệu logic thống kê được 1812 giá trị true cho biết 1812 tỷ phú là tự lập và ngược lại 828 tỷ phú là không tự lập
Các đặc điểm nổi bật của thống kê cho dữ liệu định dạng số:
Các biến age, life_expectancy_country, tax_revenue_country_country có lần lượt là 65, 182, 183 dữ liệu bị miss.
Giá trị trung bình(các biến định tính không có giá trị nên ta không tính đến biến rank): finalWorth=4623.79, life_expectancy_country=78.12, tax_revenue_country_country=12.55, age=65.14
Tương tự ta biết được các giá trị độ lệch chuẩn, giá trị nhỏ nhất, trung vị, lớn nhất và biểu đồ histogram
library(xlsx)
a <- read.xlsx("C:/Users/Dell/OneDrive/UFM/R/Billionaires Statistics Dataset.xlsx", sheetIndex = 1, header = 1)
library(skimr)
skim(a)
| Name | a |
| Number of rows | 2640 |
| Number of columns | 14 |
| _______________________ | |
| Column type frequency: | |
| character | 8 |
| logical | 1 |
| numeric | 5 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| personName | 0 | 1.00 | 5 | 40 | 0 | 2638 | 0 |
| country | 38 | 0.99 | 4 | 24 | 0 | 78 | 0 |
| source | 0 | 1.00 | 2 | 35 | 0 | 906 | 0 |
| industries | 0 | 1.00 | 6 | 26 | 0 | 18 | 0 |
| countryOfCitizenship | 0 | 1.00 | 4 | 20 | 0 | 77 | 0 |
| status | 0 | 1.00 | 1 | 20 | 0 | 6 | 0 |
| gender | 0 | 1.00 | 1 | 1 | 0 | 2 | 0 |
| title | 2301 | 0.13 | 3 | 60 | 0 | 97 | 0 |
Variable type: logical
| skim_variable | n_missing | complete_rate | mean | count |
|---|---|---|---|---|
| selfMade | 0 | 1 | 0.69 | TRU: 1812, FAL: 828 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| rank | 0 | 1.00 | 1289.16 | 739.69 | 1.0 | 659.0 | 1312.0 | 1905.0 | 2540.0 | ▇▇▇▇▇ |
| finalWorth | 0 | 1.00 | 4623.79 | 9834.24 | 1000.0 | 1500.0 | 2300.0 | 4200.0 | 211000.0 | ▇▁▁▁▁ |
| age | 65 | 0.98 | 65.14 | 13.26 | 18.0 | 56.0 | 65.0 | 75.0 | 101.0 | ▁▂▇▆▂ |
| life_expectancy_country | 182 | 0.93 | 78.12 | 3.73 | 54.3 | 77.0 | 78.5 | 80.9 | 84.2 | ▁▁▁▅▇ |
| tax_revenue_country_country | 183 | 0.93 | 12.55 | 5.37 | 0.1 | 9.6 | 9.6 | 12.8 | 37.2 | ▁▇▁▁▁ |
Sau khi mô tả cơ bản các thuộc tính của dataset, có xuất hiện các dữ liệu bị miss, ta có thể tiến hành xử lí các dữ liệu bị miss của các biến có định dạng số bao gồm age, life_expectancy_country và tax_revenue_country_country bằng cách thêm các giá trị trung bình của biến vào các ô dữ liệu bị miss bởi vì giá trị trung bình sẽ không làm biến động nhiều các thống kê khác của biến dữ liệu.
a$age[is.na(a$age)] <- mean(a$age,na.rm = T)
sum(is.na(a$age))
## [1] 0
a$life_expectancy_country[is.na(a$life_expectancy_country)] <- mean(a$life_expectancy_country,na.rm = T)
sum(is.na(a$life_expectancy_country))
## [1] 0
a$tax_revenue_country_country[is.na(a$tax_revenue_country_country)] <- mean(a$tax_revenue_country_country,na.rm = T)
sum(is.na(a$tax_revenue_country_country))
## [1] 0
Ta sẽ giả sử với một số ví dụ như sau: - Chỉ làm việc với các tỷ phú nằm trong top 30
Chọn những tỷ phú có giá trị tài sản ròng lớn hơn 60000
Chọn những tỷ phú trên 70 tuổi và có quốc tịch Mỹ
Chỉ làm việc với các biến Rank, FinalWorth, age, gender mà tài sản không phải thừa kế.
top30 <- head(a,30)
str(top30)
## 'data.frame': 30 obs. of 14 variables:
## $ rank : num 1 2 3 4 5 6 7 8 9 10 ...
## $ finalWorth : num 211000 180000 114000 107000 106000 104000 94500 93000 83400 80700 ...
## $ personName : chr "Bernard Arnault & family" "Elon Musk" "Jeff Bezos" "Larry Ellison" ...
## $ age : num 74 51 59 78 92 67 81 83 65 67 ...
## $ country : chr "France" "United States" "United States" "United States" ...
## $ source : chr "LVMH" "Tesla, SpaceX" "Amazon" "Oracle" ...
## $ industries : chr "Fashion & Retail" "Automotive" "Technology" "Technology" ...
## $ countryOfCitizenship : chr "France" "United States" "United States" "United States" ...
## $ selfMade : logi FALSE TRUE TRUE TRUE TRUE TRUE ...
## $ status : chr "U" "D" "D" "U" ...
## $ gender : chr "M" "M" "M" "M" ...
## $ title : chr "Chairman and CEO" "CEO" "Chairman and Founder" "CTO and Founder" ...
## $ life_expectancy_country : num 82.5 78.5 78.5 78.5 78.5 78.5 78.5 75 69.4 78.5 ...
## $ tax_revenue_country_country: num 24.2 9.6 9.6 9.6 9.6 9.6 9.6 13.1 11.2 9.6 ...
taisan <- a[a$finalWorth>60000,]
str(taisan)
## 'data.frame': 16 obs. of 14 variables:
## $ rank : num 1 2 3 4 5 6 7 8 9 10 ...
## $ finalWorth : num 211000 180000 114000 107000 106000 104000 94500 93000 83400 80700 ...
## $ personName : chr "Bernard Arnault & family" "Elon Musk" "Jeff Bezos" "Larry Ellison" ...
## $ age : num 74 51 59 78 92 67 81 83 65 67 ...
## $ country : chr "France" "United States" "United States" "United States" ...
## $ source : chr "LVMH" "Tesla, SpaceX" "Amazon" "Oracle" ...
## $ industries : chr "Fashion & Retail" "Automotive" "Technology" "Technology" ...
## $ countryOfCitizenship : chr "France" "United States" "United States" "United States" ...
## $ selfMade : logi FALSE TRUE TRUE TRUE TRUE TRUE ...
## $ status : chr "U" "D" "D" "U" ...
## $ gender : chr "M" "M" "M" "M" ...
## $ title : chr "Chairman and CEO" "CEO" "Chairman and Founder" "CTO and Founder" ...
## $ life_expectancy_country : num 82.5 78.5 78.5 78.5 78.5 78.5 78.5 75 69.4 78.5 ...
## $ tax_revenue_country_country: num 24.2 9.6 9.6 9.6 9.6 9.6 9.6 13.1 11.2 9.6 ...
tuoi70 <- a[a$age>70 & a$countryOfCitizenship == 'United States',]
str(tuoi70)
## 'data.frame': 322 obs. of 14 variables:
## $ rank : num 4 5 7 17 19 20 21 25 31 31 ...
## $ finalWorth : num 107000 106000 94500 59000 58800 57600 56700 45100 38300 38300 ...
## $ personName : chr "Larry Ellison" "Warren Buffett" "Michael Bloomberg" "Charles Koch & family" ...
## $ age : num 78 92 81 87 74 78 73 85 83 87 ...
## $ country : chr "United States" "United States" "United States" "United States" ...
## $ source : chr "Oracle" "Berkshire Hathaway" "Bloomberg LP" "Koch Industries" ...
## $ industries : chr "Technology" "Finance & Investments" "Media & Entertainment" "Diversified" ...
## $ countryOfCitizenship : chr "United States" "United States" "United States" "United States" ...
## $ selfMade : logi TRUE TRUE TRUE FALSE FALSE FALSE ...
## $ status : chr "U" "D" "U" "D" ...
## $ gender : chr "M" "M" "M" "M" ...
## $ title : chr "CTO and Founder" "CEO" "CEO" "Chairman and CEO" ...
## $ life_expectancy_country : num 78.5 78.5 78.5 78.5 78.5 78.5 78.5 78.5 78.5 78.5 ...
## $ tax_revenue_country_country: num 9.6 9.6 9.6 9.6 9.6 9.6 9.6 9.6 9.6 9.6 ...
library(dplyr)
a1 <- filter(a, status=='D') %>% select(rank,finalWorth, age, gender)
str(a1)
## 'data.frame': 1223 obs. of 4 variables:
## $ rank : num 2 3 5 6 9 10 12 14 16 17 ...
## $ finalWorth: num 180000 114000 106000 104000 83400 80700 79200 76000 64400 59000 ...
## $ age : num 51 59 92 67 65 67 50 49 38 87 ...
## $ gender : chr "M" "M" "M" "M" ...
Ta sẽ tạo thêm các biến mới cho dataset và gán nó thành object b:
Thêm cột minus_age với dữ liệu là cột age trừ cho life_expectancy_country.
Thêm cột sosanh để so sánh dữ liệu giữa cột age và cột life_expectancy_country, nếu cột age lớn hơn thì sẽ hiện dữ liệu là “lớn hơn” ngược lại thì là “nhỏ hơn” và “bằng nhau”
b <- mutate(a,minus_age=age-life_expectancy_country) %>% mutate(sosanh=case_when(a$age > a$life_expectancy_country ~ 'lớn hơn',a$age < a$life_expectancy_country ~ 'nhỏ hơn',a$age == a$life_expectancy_country ~ 'bằng nhau'))
str(b)
## 'data.frame': 2640 obs. of 16 variables:
## $ rank : num 1 2 3 4 5 6 7 8 9 10 ...
## $ finalWorth : num 211000 180000 114000 107000 106000 104000 94500 93000 83400 80700 ...
## $ personName : chr "Bernard Arnault & family" "Elon Musk" "Jeff Bezos" "Larry Ellison" ...
## $ age : num 74 51 59 78 92 67 81 83 65 67 ...
## $ country : chr "France" "United States" "United States" "United States" ...
## $ source : chr "LVMH" "Tesla, SpaceX" "Amazon" "Oracle" ...
## $ industries : chr "Fashion & Retail" "Automotive" "Technology" "Technology" ...
## $ countryOfCitizenship : chr "France" "United States" "United States" "United States" ...
## $ selfMade : logi FALSE TRUE TRUE TRUE TRUE TRUE ...
## $ status : chr "U" "D" "D" "U" ...
## $ gender : chr "M" "M" "M" "M" ...
## $ title : chr "Chairman and CEO" "CEO" "Chairman and Founder" "CTO and Founder" ...
## $ life_expectancy_country : num 82.5 78.5 78.5 78.5 78.5 78.5 78.5 75 69.4 78.5 ...
## $ tax_revenue_country_country: num 24.2 9.6 9.6 9.6 9.6 9.6 9.6 13.1 11.2 9.6 ...
## $ minus_age : num -8.5 -27.5 -19.5 -0.5 13.5 ...
## $ sosanh : chr "nhỏ hơn" "nhỏ hơn" "nhỏ hơn" "nhỏ hơn" ...