Thực hiện các thao tác một số lệch cơ bản và rút trích dữ liệu trên file xlsx ” population-and-demography.xlsx”. File phân tích tổng dân số của các quốc gia theo độ tuổi qua các năm từ năm 1950 - 2021
Các thông tin tổng quan về dataset:
Là một data frame
Có 24 cột tương đương 24 biến
Các cột lần lượt là:
Country.name: Tên các quốc gia
Year: năm lấy số liệu
Population: Tổng dân số
Population.of.children.under.the.age.of.1: Dân số dưới 1 tuổi
Population.of.children.under.the.age.of.5: Dân số dưới 5 tuổi
Population.of.children.under.the.age.of.15: Dân số dưới 15 tuổi
Population.under.the.age.of.25: Dân số dưới 25 tuổi
Population.aged.15.to.64.years: Dân số từ 15 đến 64 tuổi
Population.older.than.15.years: Dân số lớn hơn 15 tuổi
Population.older.than.18.years: Dân số lớn hơn 18 tuổi
Population.at.age.1: Dân số tại độ tuổi 1
Population.aged.1.to.4.years: Dân số từ 1 đến 4 tuổi
Population.aged.5.to.9.years: Dân số từ 5 đến 9 tuổi
Population.aged.10.to.14.years: Dân số từ 10 đến 14 tuổi
Population.aged.15.to.19.years: Dân số từ 15 đến 19 tuổi
Population.aged.20.to.29.years: Dân số từ 20 đến 29 tuổi
Population.aged.30.to.39.years: Dân số từ 30 đến 39 tuổi
Population.aged.40.to.49.years: Dân số từ 40 đến 49 tuổi
Population.aged.50.to.59.years: Dân số từ 50 đến 59 tuổi
Population.aged.60.to.69.years: Dân số từ 60 đến 69 tuổi
Population.aged.70.to.79.years: Dân số từ 70 đến 79 tuổi
Population.aged.80.to.89.years: Dân số từ 80 đến 89 tuổi
Population.aged.90.to.99.years: Dân số từ 90 đến 99 tuổi
Population.older.than.100.years: Dân số lớn hơn 100 tuổi
Có 18288 hàng tương đương 18288 quan sát
Data không có dữ liệu trống
# Kiểm tra xem "a" có phải là data frame hay không, nếu đúng thì kết quả trả về TRUE và ngược lại, kiểm tra bằng câu lệnh
is.data.frame(a)## [1] TRUE
## [1] 24
## [1] "Country.name"
## [2] "Year"
## [3] "Population"
## [4] "Population.of.children.under.the.age.of.1"
## [5] "Population.of.children.under.the.age.of.5"
## [6] "Population.of.children.under.the.age.of.15"
## [7] "Population.under.the.age.of.25"
## [8] "Population.aged.15.to.64.years"
## [9] "Population.older.than.15.years"
## [10] "Population.older.than.18.years"
## [11] "Population.at.age.1"
## [12] "Population.aged.1.to.4.years"
## [13] "Population.aged.5.to.9.years"
## [14] "Population.aged.10.to.14.years"
## [15] "Population.aged.15.to.19.years"
## [16] "Population.aged.20.to.29.years"
## [17] "Population.aged.30.to.39.years"
## [18] "Population.aged.40.to.49.years"
## [19] "Population.aged.50.to.59.years"
## [20] "Population.aged.60.to.69.years"
## [21] "Population.aged.70.to.79.years"
## [22] "Population.aged.80.to.89.years"
## [23] "Population.aged.90.to.99.years"
## [24] "Population.older.than.100.years"
## [1] 18288 24
## [1] 0
# Đổi tên các biến để thuận tiện thao tác trên dữ liệu "a"
a <- rename(a,country = Country.name ,pop = Population, year = Year) # đổi tên các cột Country.name, Population và Year thành country, pop và year
a <- a %>% rename(pop0 = Population.of.children.under.the.age.of.15 ,pop2 = Population.aged.60.to.69.years ,pop3 = Population.aged.70.to.79.years ,pop4 = Population.aged.80.to.89.years ,pop6 = Population.aged.90.to.99.years) ## đổi tên thay thế lần lượt cho các cột Population.of.children.under.the.age.of.15, Population.aged.60.to.69.years, Population.aged.70.to.79.years, Population.aged.80.to.89.years, Population.aged.90.to.99Bộ dữ liệu “a” là bộ dữ liệu lớn chứa thông tin về các quốc gia trên thế giới về dân số và số dân thuộc các nhóm tuổi khác nhau. Vì vậy, ta tiến hành rút trích dữ liệu từ đó để dễ dàng thao tác
# Gán dữ liệu được trích vào n, sau đó lọc bộ dữ liệu "a"
n <- a %>% filter(country %in% c('Vietnam','Colombia','Laos','Myanmar','Thailand')) # lọc các quốc gia trong cột country và giữ các hàng của cột country name bắt đầu bằng chữ 'Vietnam','Colombia','Laos','Myanmar','Thailand'n <- n %>% select(country,year,pop,pop0,pop2,pop3,pop4,pop6)# lọc các cột country, year, pop, pop0, pop2, pop3, pop4 và pop6
nBộ dữ liệu “n” là bộ dữ liệu mới phân tích về tổng dân số và dân số của 5 độ tuổi ở 5 quốc gia khác nhau bao gồm:
country: tên 5 quốc gia cần phân tích
year: năm lấy dữ liệu
pop: tổng dân số
pop0: dân số của trẻ em dưới 15 tuổi
pop2: dân số từ 15 đến 64 tuổi
pop3: dân số từ 60 đến 69 tuổi
pop4: dân số có độ tuổi từ 70 đến 79
pop6: dân số từ 100 tuổi trở lên
Bộ dữ liệu “n” gồm 360 quan sát ( 360 hàng) và 8 biến ( 8 cột)
Tiến hành thực hiện các lệnh để tạo thêm biến mới cho bộ dữ liệu n, kết quả của việc tạo ra cột dữ liệu mới là bộ dữ liệu n xuất hiện thêm 3 biến mới là:
pop7: Population.older.than.60.years - là dân số lớn hơn 60 tuổi
ttds: tỷ trọng dân số nhóm tuổi dưới tuổi lao động ( dưới 15 tuổi)
ttds1: tỷ trọng dân số nhóm tuổi trên lao động ( từ 60 trở lên)
n <- n %>% mutate(pop7 = pop2 + pop3 + pop4 + pop6) # dân số lớn hơn 60 tuổi được tính bằng tổng số dân của các nhóm tuổi pop2,pop3,pop4,pop6
n <- n %>% mutate(ttds = ( pop0 / pop ) * 100, ttds1 = ( pop7 / pop ) * 100) # tỷ trọng dân số thuộc nhóm tuổi i được tính bằng (số dân thuộc nhóm tuổi i/tổng số dân)*100
str(n)## 'data.frame': 360 obs. of 11 variables:
## $ country: chr "Colombia" "Colombia" "Colombia" "Colombia" ...
## $ year : int 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 ...
## $ pop : num 11769747 12087061 12419969 12767245 13130655 ...
## $ pop0 : int 5147615 5322337 5508316 5706160 5913987 6130810 6356226 6590926 6833562 7083173 ...
## $ pop2 : int 368246 376270 384912 393767 402711 411778 420790 429784 439036 448944 ...
## $ pop3 : int 175991 176932 177867 179904 183683 189050 195604 203238 211350 219122 ...
## $ pop4 : int 46988 48978 50662 51982 52878 53454 53873 54246 54707 55438 ...
## $ pop6 : int 2201 2113 2038 2061 2218 2455 2696 2925 3141 3330 ...
## $ pop7 : int 593426 604293 615479 627714 641490 656737 672963 690193 708234 726834 ...
## $ ttds : num 43.7 44 44.4 44.7 45 ...
## $ ttds1 : num 5.04 5 4.96 4.92 4.89 ...
Mã hóa dữ liệu tỷ trọng dân số của 2 nhóm tuổi thành: dân số trẻ (T), dân số già (G). Dữ liệu được mã hóa thể hiện cơ cấu dân số của một quốc gia
# tạo ra biến mới tên Ccauds lấy từ biến ttds và biến ttds1
n$Ccauds <- ifelse(n$ttds >= 35 & n$ttds1 < 7, 'T', 'G') # nếu tỷ trọng dân số trong độ tuổi dưới 15 vượt qua 35% và tỷ trọng dân số trong độ tuổi 60-69 không quá 7% thì dân số trẻ, ngược lại là dân số già
str(n)## 'data.frame': 360 obs. of 12 variables:
## $ country: chr "Colombia" "Colombia" "Colombia" "Colombia" ...
## $ year : int 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 ...
## $ pop : num 11769747 12087061 12419969 12767245 13130655 ...
## $ pop0 : int 5147615 5322337 5508316 5706160 5913987 6130810 6356226 6590926 6833562 7083173 ...
## $ pop2 : int 368246 376270 384912 393767 402711 411778 420790 429784 439036 448944 ...
## $ pop3 : int 175991 176932 177867 179904 183683 189050 195604 203238 211350 219122 ...
## $ pop4 : int 46988 48978 50662 51982 52878 53454 53873 54246 54707 55438 ...
## $ pop6 : int 2201 2113 2038 2061 2218 2455 2696 2925 3141 3330 ...
## $ pop7 : int 593426 604293 615479 627714 641490 656737 672963 690193 708234 726834 ...
## $ ttds : num 43.7 44 44.4 44.7 45 ...
## $ ttds1 : num 5.04 5 4.96 4.92 4.89 ...
## $ Ccauds : chr "T" "T" "T" "T" ...
Kết quả là tỷ trọng dân số dưới 15 tuổi ở Colombia thấp trong vòng 10 năm, trung bình trong 23 năm và cao trong 39 năm.
Tỷ trọng dân số dưới 15 tuổi ở Lào trung bình trong vòng 13 năm và cao trong 59 năm. Tỷ trọng dân số ở Myanmar thấp trong 6 năm, trung bình 30 năm và cao trong 36 năm.
Tỷ trọng dân số dưới 15 tuổi ở Thái Lan thấp 26 năm, trung bình 13 năm và cao trong vòng 33 năm. Tỷ trọng dân số dưới 15 tuổi ở Việt Nam thấp 15 năm, trung bình 19 năm và cao trong vòng 38
##
## Colombia Laos Myanmar Thailand Vietnam
## 72 72 72 72 72
table(cut(n$ttds,3)) # kiểm tra số lần lặp lại của 3 tổ, ttds được phân làm 3 tổ: (15.8,26,3], (26.3,36.8], (36.8,47.3]##
## (15.8,26.3] (26.3,36.8] (36.8,47.3]
## 57 98 205
n$nh <- cut(n$ttds,3, labels = c('thấp','trung bình','cao')) # gán dữ liệu vào biến mới là biến nh, sau đó 3 tổ ttds có tên lần lượt là tổ thấp, tổ trung bình và tổ cao
table(n$country,n$nh) # số lần lặp lại của các biến country và biến nh##
## thấp trung bình cao
## Colombia 10 23 39
## Laos 0 13 59
## Myanmar 6 30 36
## Thailand 26 13 33
## Vietnam 15 19 38
Tiến hành phân tích dân số của Comlobia trong vòng 5 năm (năm 2017-2021):
Tổng dân số của Colombia là 250.263.258 người
Tổng dân số ghi nhận ít nhất trong 5 năm qua là 48.351.668 người
Có 25% tổng dân số thấp hơn 49.276.970 người và 75% tổng dân số lớn hơn 49.276.970 người
Có 50% tổng dân số thấp hơn 50.187.404 và 50% tổng dân số cao hơn 50.187.404 người
75% tổng dân số thấp hơn 50.930.656 người và 25% tổng dân số cao hơn 50.930.656 người
Tổng dân số cao nhất của Colombia là 51.516.560 người
Tổng dân số qua các thời kì có sự chênh lệch 1.267.587 người
m <- filter(n,country =='Colombia' & year >= '2017') # lọc dữ liệu, chỉ lấy dữ liệu thuộc về Colombia
sum(m$pop) # tổng dân số## [1] 250263258
summary(m$pop) # tóm tắt giá trị trong biến pop: min:giá trị tối thiểu; 1st Qu.:giá trị của tứ phân vị thứ 1; median:giá trị trung vị; 3rd Qu.:giá trị của tứ phân vị thứ 3; max:giá trị tối đa## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 48351668 49276970 50187404 50052652 50930656 51516560
## [1] 1267587
Tiến hành phân tích tổng dân số của mỗi quốc gia trong 5 quốc gia thuộc Đông Nam Á: Colombia, Myanmar, Laos, Thailand, Vietnam
Tổng dân số của 5 quốc gia là 1.386.789.907 (người)
Tổng dân số ghi nhận ít nhất trong 5 năm qua là 6.997.925 người
Có 25% tổng dân số thấp hơn 49.276.970 người và 75% tổng dân số lớn hơn 49.276.970 người
Có 50% tổng dân số thấp hơn 53.040.212 và 50% tổng dân số cao hơn 53.040.212 người
75% tổng dân số thấp hơn 71.475.660 người và 25% tổng dân số cao hơn 71.475.660 người
Tổng dân số cao nhất của các nước Đông Nam Á là 97.468.024 người
Trung bình tổng dân số là 55.471.596 (người)
Tổng dân số các nước có sự chênh lệch 24.161.223 (người)
## [1] 1386789907
summary(h$pop) # tóm tắt giá trị trong biến pop: min:giá trị tối thiểu; 1st Qu.:giá trị của tứ phân vị thứ 1; median:giá trị trung vị; 3rd Qu.:giá trị của tứ phân vị thứ 3; max:giá trị tối đa## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6997925 49276970 53040212 55471596 71475660 97468024
## [1] 24161223
Thực hiện các thao tác trên file csv “all_v2”. File này thống kê về bất động sản ở Nga 2018-2021, bao gồm các tiêu chí:
price: giá thành ( đơn vị: rups)
date: ngày công bố thông báo
time: thời điểm quảng cáo được xuất bản
geo_lat: Vĩ độ
geo_lon: Kinh độ
region: Khu vực của Nga. Tổng cộng có 85 đối tượng trong cả nước.
building_type: Loại mặt tiền. 0 - Khác. 1 - Bảng điều khiển. 2 - Nguyên khối. 3 - Gạch. 4 - Khối. 5 - Gỗ
object_type: Loại căn hộ. 1 - Thị trường bất động sản thứ cấp; 2 – Xây dựng mới
level: Tầng căn hộ tầng
levels: Số tầng
rooms: số lượng phòng khách. Nếu giá trị là “-1” thì có nghĩa là “studio apartment”
area: tổng diện tích căn hộ
Kitchen_area - Khu vực bếp
Các thông tin tổng quát về dataset:
Là một data frame
có 13 cột tương đương với 13 biến
Các cột lần lượt là:
price: giá thành ( đơn vị: rups)
date: ngày công bố thông báo
time: thời điểm quảng cáo được xuất bản
geo_lat: Vĩ độ
geo_lon: Kinh độ
region: Khu vực của Nga. Tổng cộng có 85 đối tượng trong cả nước.
building_type: Loại mặt tiền. 0 - Khác. 1 - Bảng điều khiển.2 - Nguyên khối. 3 - Gạch. 4 - Khối. 5 - Gỗ
object_type: Loại căn hộ. 1 - Thị trường bất động sản thứ cấp; 2 – Xây dựng mới
level: Tầng căn hộ tầng
levels: Số tầng
rooms: số lượng phòng khách. Nếu giá trị là “-1” thì có nghĩa là “studio apartment”
area: tổng diện tích căn hộ
Kitchen_area - Khu vực bếp
Có 5477006 hàng tương đương 5377006 quan sát
Data không có dữ liệu trống
is.data.frame(d) # kiểm tra xem "d" có phải là data frame hay không, nếu đúng kết quả trả về TRUE và ngược lại## [1] TRUE
## [1] 13
## [1] "price" "date" "time" "geo_lat"
## [5] "geo_lon" "region" "building_type" "level"
## [9] "levels" "rooms" "area" "kitchen_area"
## [13] "object_type"
## [1] 5477006 13
## [1] 0
library(tidyverse)
# Vì dữ liệu thuộc khu vực Nga nên cột region không chính xác, tiến hành xóa cột region bằng câu lệnh
d <- select(d,-region) # bộ dữ liệu d là bộ dữ liệu với 12 biến
d # d trở thành bộ dữ liệu với 12 biến# Gán dữ liệu được trích vào g, sau đó lọc bộ dữ liệu d
g <- d %>% filter(object_type == 1) %>% select(price,building_type,rooms,area,object_type) # kết quả lọc các cột price, building_type, rooms, area và object_type với điều kiện là xây mới (object_type = 1)
str(g)## 'data.frame': 3863809 obs. of 5 variables:
## $ price : int 6050000 8650000 4000000 5450000 3300000 3600000 2800000 4550000 2880000 1450000 ...
## $ building_type: int 1 3 1 3 1 1 1 3 1 1 ...
## $ rooms : int 3 2 3 2 1 1 2 2 2 1 ...
## $ area : num 82.6 69.1 66 60 32 31.1 55 54.2 51 43 ...
## $ object_type : int 1 1 1 1 1 1 1 1 1 1 ...
Bộ dữ liệu “g” là bộ dữ liệu mới phân tích về bất động sản ở Nga thông qua các tiêu chí:
price: giá thành (rups)
building_type: loại mặt tiền
rooms: số lượng phòng khách
area: tổng diện tích căn hộ
object_type: loại căn hộ
Bộ dữ liệu “g” là data frame với 3863809 quan sát ( 3863809 hàng) và 5 biến ( 5 cột)
Mã hóa dữ liệu của “g” thành: căn hộ mới (Apnew), căn hộ bình thường (Apnor). Dữ liệu được mã hóa thể hiện loại phòng của căn hộ
# Tạo ra biến mới có tên room_tyle, lấy từ biến rooms và object_tyle
g$room_tyle <- ifelse(g$rooms == -1, 'Apnew', 'Apnor')
str(g)## 'data.frame': 3863809 obs. of 6 variables:
## $ price : int 6050000 8650000 4000000 5450000 3300000 3600000 2800000 4550000 2880000 1450000 ...
## $ building_type: int 1 3 1 3 1 1 1 3 1 1 ...
## $ rooms : int 3 2 3 2 1 1 2 2 2 1 ...
## $ area : num 82.6 69.1 66 60 32 31.1 55 54.2 51 43 ...
## $ object_type : int 1 1 1 1 1 1 1 1 1 1 ...
## $ room_tyle : chr "Apnor" "Apnor" "Apnor" "Apnor" ...
##
## (-7.79,2.62e+03] (2.62e+03,5.24e+03] (5.24e+03,7.86e+03]
## 3863734 66 9
g$kh <- cut(g$area,3, labels = c('nhỏ','trung bình','lớn')) # gán vào kh, sau đó phân area làm 3 tổ có tên lần lượt là 'nhỏ','trung bình','lớn'
table(g$room_tyle,g$kh) # số lần xuất hiện của biến room_tyle và kh##
## nhỏ trung bình lớn
## Apnew 152012 1 1
## Apnor 3711722 65 8
Căn hộ mới có 152012 phòng có diện tích nhỏ
Căn hộ mới có 1 phòng có diện tích trung bình
Không có căn hộ mới cỡ lớn
Căn hộ bình thường có 3711722 phòng có diện tích nhỏ
Căn hộ bình thường có 56 phòng có diện tích trung bình
Có 8 phòng có diện tích lớn trong căn hộ bình thường
# tính các đặc trưng đo lường
ph <- g %>% group_by(price) %>% summarise(mean_of_area = mean(area)) # gán dữ liệu ph được tạo bởi nhóm price và giá trị trung bình của tổng diện tích căn hộ
summary(ph)## price mean_of_area
## Min. :-2.145e+09 Min. : 1.00
## 1st Qu.: 2.990e+06 1st Qu.: 43.70
## Median : 5.548e+06 Median : 61.20
## Mean : 1.393e+07 Mean : 73.03
## 3rd Qu.: 1.133e+07 3rd Qu.: 85.20
## Max. : 2.147e+09 Max. :4250.00
Tiến hành phân tích dữ liệu theo giá thành, thu được kết quả như sau:
Diện tích trung bình ( mean) của một căn hộ là 73.02482 m^2 có giá trung bình là 1,393 triệu rups
Diện tích căn hộ nhỏ nhất (min) là 1 m2 có giá thấp nhất là -2,145 triệu rups
Diện tích lớn nhất của căn hộ là 4250 m2 có giá cao nhất là 2,147 triệu rups
Có 25% căn hộ có diện tích trung bình 61.2m2,giá 2,99 triệu rups và 75% căn hộ có diện tích trung bình 61.2m2, giá 2.99 triệu rups
Có 50% căn hộ có diện tích trung bình 73.03m2, giá 1.393 triệu rups và 50% còn lại
có 75% căn hộ có diện tích trung bình 85.2m2, giá 1,133 triệu rups và 25% còn lại