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 mô tả cơ bản về dataset:
Là 1 data frame
Có 9 cột tương đương với 9 biến
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).
Có 640 hàng tương đương với 640 quan sát
Dataset không có dữ liệu trố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 | ▇▁▁▁▆ |
Việc rút trích dữ liệu giúp chúng ta có thể thực hiện các thao tác trên dữ liệu dễ dàng hơn với phần dữ liệu cụ thể mà chúng ta muốn làm việc, để chắc chắn đã rút trích thành công ta dùng lệnh str(x) với x là tên object mà ta gán dữ liệu để có thể xem số quan sát và số biến của x, dưới đây là một số ví dụ:
# lấy 10 dòng đầu
head(h,10)
## 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
# lấy 10 dòng cuối
tail(h,10)
## id year bwt gestation parity age height weight smoke
## 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 2 cột 3
h1 <- h[2,3]
str(h1)
## num 112
## 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 1
h4 <- h[h$i==1,]
str(h4)
## 'data.frame': 80 obs. of 9 variables:
## $ i : num 1 1 1 1 1 1 1 1 1 1 ...
## $ y : num 1925 1926 1927 1928 1929 ...
## $ b : num 120 113 128 108 136 138 132 120 143 140 ...
## $ g : num 284 282 279 282 286 244 245 289 299 351 ...
## $ p : num 0 0 0 0 0 0 0 0 0 0 ...
## $ a : num 27 33 28 23 25 33 23 25 30 27 ...
## $ he: num 62 64 64 67 62 62 65 62 66 68 ...
## $ w : num 100 135 115 125 93 178 140 125 136 120 ...
## $ s : num 0 0 1 1 0 0 0 0 1 0 ...
## Gán h5 là những hàng có năm 1925 -> 1930
h5 <- h[h$y >= 1925 & h$y <= 1930,]
str(h5)
## 'data.frame': 48 obs. of 9 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 ...
## 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 > 25 & w > 150) %>% 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': 49 obs. of 4 variables:
## $ i : num 2 3 8 1 2 3 3 4 5 4 ...
## $ a : num 27 29 33 33 41 34 43 35 40 42 ...
## $ he: num 67 68 67 62 66 66 67 66 62 67 ...
## $ w : num 170 178 185 178 191 170 160 165 159 156 ...
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à khl 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
chieucao: đánh giá chiều cao của các đối tượng
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
khl <- mutate(h, cm = he*2.54) %>% mutate(,kg=w*0.453592) %>% mutate(,bmi=kg/((cm/100)^2)) #cột cm được tính bằng cột he nhân cho 2.54, tương tự các cột sau
str(khl)
## '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 ...
# Mã hóa dữ liệu
## thêm một cột xác định cao hay không cao
khl$chieucao <- ifelse(khl$cm >= 165,'cao', 'không cao') #nếu cột cm có giá trị lớn hơn 160 thì cột chiều cao sẽ có giá trị là "cao" và ngược lại
str(khl)
## 'data.frame': 640 obs. of 13 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 ...
## $ chieucao: chr "không cao" "không cao" "không cao" "không cao" ...
## thêm cột xác định cân nặng của người mang thai có phù hợp hay không
khl$tieuchuan <- case_when(khl$bmi < 18.5 ~ 'Gầy',khl$bmi>=18.5 & khl$bmi <= 24.5 ~ 'Bình thường', khl$bmi>=25 & khl$bmi<=29.9 ~ 'Thừa cân', khl$bmi>=30 ~ 'Béo phì') #đánh giá dựa trên tiêu chuẩn bmi
str(khl)
## 'data.frame': 640 obs. of 14 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 ...
## $ chieucao : chr "không cao" "không cao" "không cao" "không cao" ...
## $ tieuchuan: chr "Gầy" "Thừa cân" "Bình thường" "Bình thường" ...
Ta thử tiến hành xem tần số của những đối tượng theo tiêu chuẩn bmi và vẽ biểu đồ nhánh và lá của biến kg:
table(khl$tieuchuan)
##
## Béo phì Bình thường Gầy Thừa cân
## 16 485 50 67
stem(khl$kg)
##
## The decimal point is 1 digit(s) to the right of the |
##
## 3 | 9
## 4 | 0111222233444
## 4 | 55555555555566666666677777777777777788888888888889999999999999999999
## 5 | 00000000000000000000000000000000000000000111111111111111111111111122+79
## 5 | 55555555555555555555556666666666666667777777777777777777777777777777+85
## 6 | 00000000000000000011111111111111111111111111111111111111122222222222+27
## 6 | 55555556666666666666666666666666777777777888888888888888888899
## 7 | 000000000111111122223333333334
## 7 | 55577777779999
## 8 | 001122223444
## 8 | 67
## 9 |
## 9 | 5588
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" ...