Bộ dữ liệu population-and-demography.csv: là một bộ dữ liệu mô tả dân số của các quốc gia và khu vực trên thế giới trong những năm từ 1950 đến 2021 Bộ dữ liệu được lưu trữ dưới hình thức file csv, để đọc và mô tả chi tiết về bộ dữ liệu ta thực hiện các câu lệnh sau:
library(csv) #gọi package csv
nth <- read.csv(file='C:/Users/Admin/Downloads/population-and-demography.csv') #đọc dữ liệu từ file csv
library(skimr) #gọi package
skim(nth) #mô tả thông tin chi tiết bộ dữ liệu
| Name | nth |
| Number of rows | 18288 |
| Number of columns | 24 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| numeric | 23 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| Country.name | 0 | 1 | 4 | 59 | 0 | 254 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| Year | 0 | 1 | 1985.50 | 20.78 | 1950 | 1967.75 | 1985.5 | 2003.25 | 2021 | ▇▇▇▇▇ |
| Population | 0 | 1 | 126470436.62 | 588851230.77 | 1363 | 291591.50 | 3833997.5 | 16785463.50 | 7909295000 | ▇▁▁▁▁ |
| Population.of.children.under.the.age.of.1 | 0 | 1 | 3133496.86 | 14167006.03 | 25 | 6663.75 | 88352.0 | 463000.50 | 139783730 | ▇▁▁▁▁ |
| Population.of.children.under.the.age.of.5 | 0 | 1 | 14825709.57 | 67384368.62 | 136 | 31995.25 | 423784.5 | 2160046.50 | 690360700 | ▇▁▁▁▁ |
| Population.of.children.under.the.age.of.15 | 0 | 1 | 41095227.11 | 188416973.54 | 416 | 89541.50 | 1186121.5 | 5905944.75 | 2015023400 | ▇▁▁▁▁ |
| Population.under.the.age.of.25 | 0 | 1 | 63762600.31 | 294251869.66 | 623 | 139541.50 | 1843099.5 | 9025129.75 | 3239281000 | ▇▁▁▁▁ |
| Population.aged.15.to.64.years | 0 | 1 | 77429505.08 | 367651914.71 | 748 | 170263.50 | 2246772.0 | 9641250.00 | 5132999000 | ▇▁▁▁▁ |
| Population.older.than.15.years | 0 | 1 | 85372101.76 | 404866940.61 | 849 | 186716.00 | 2482104.0 | 10354345.50 | 5893678600 | ▇▁▁▁▁ |
| Population.older.than.18.years | 0 | 1 | 78196242.04 | 372017010.49 | 752 | 166417.50 | 2238130.5 | 9239904.00 | 5516283000 | ▇▁▁▁▁ |
| Population.at.age.1 | 0 | 1 | 3011212.81 | 13661998.41 | 26 | 6473.75 | 85824.0 | 440787.50 | 138478740 | ▇▁▁▁▁ |
| Population.aged.1.to.4.years | 0 | 1 | 11692212.72 | 53238243.89 | 101 | 25269.25 | 334454.0 | 1697850.75 | 550970400 | ▇▁▁▁▁ |
| Population.aged.5.to.9.years | 0 | 1 | 13598575.21 | 62534310.11 | 138 | 29406.25 | 392220.5 | 1947260.75 | 683611800 | ▇▁▁▁▁ |
| Population.aged.10.to.14.years | 0 | 1 | 12670942.28 | 58775457.46 | 73 | 27879.50 | 363895.5 | 1796754.00 | 659934300 | ▇▁▁▁▁ |
| Population.aged.15.to.19.years | 0 | 1 | 11782258.92 | 55126036.18 | 110 | 26296.50 | 336969.5 | 1626210.75 | 623576060 | ▇▁▁▁▁ |
| Population.aged.20.to.29.years | 0 | 1 | 20872880.04 | 98860990.50 | 158 | 45050.75 | 609723.5 | 2758738.50 | 1210493200 | ▇▁▁▁▁ |
| Population.aged.30.to.39.years | 0 | 1 | 17158704.11 | 82404600.95 | 137 | 36608.25 | 486290.5 | 2113149.00 | 1165207300 | ▇▁▁▁▁ |
| Population.aged.40.to.49.years | 0 | 1 | 13622138.99 | 66008221.21 | 119 | 27440.25 | 364712.5 | 1556334.00 | 976407200 | ▇▁▁▁▁ |
| Population.aged.50.to.59.years | 0 | 1 | 10177069.11 | 49288480.77 | 95 | 19649.75 | 264781.5 | 1203386.00 | 851356900 | ▇▁▁▁▁ |
| Population.aged.60.to.69.years | 0 | 1 | 6801756.84 | 32712918.99 | 64 | 12603.00 | 168417.5 | 845242.75 | 598067140 | ▇▁▁▁▁ |
| Population.aged.70.to.79.years | 0 | 1 | 3618710.03 | 17491538.61 | 31 | 6221.00 | 81824.0 | 436710.00 | 330491170 | ▇▁▁▁▁ |
| Population.aged.80.to.89.years | 0 | 1 | 1195799.30 | 6238308.33 | 6 | 1818.75 | 20269.5 | 133380.50 | 131835590 | ▇▁▁▁▁ |
| Population.aged.90.to.99.years | 0 | 1 | 142784.38 | 853350.39 | 0 | 154.75 | 1468.5 | 12499.00 | 22223974 | ▇▁▁▁▁ |
| Population.older.than.100.years | 0 | 1 | 3107.72 | 20951.57 | 0 | 0.00 | 13.0 | 163.00 | 593166 | ▇▁▁▁▁ |
Các câu lệnh trên cho ta kết quả chi tiết về bộ dữ liệu trong đó:
population-and-demography.csv mang một dữu liệu lớn. Do đó khi phân tích thông tin về một vấn đề quan tâm, ta thực hiện các thao tác sau:
library(tidyverse) # gọi packsge tidyverse dùng để sử dụng toán tử pipe %>%
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
nth <- nth %>% rename( 'count'= Country.name, 'Y'= Year, 'pop'= Population, 'p10to14'= Population.aged.10.to.14.years,'p15to19'= Population.aged.15.to.19.years,'p20to29'= Population.aged.20.to.29.years, 'p30to39'=Population.aged.30.to.39.years, 'p40to49'=Population.aged.40.to.49.years, )
=> Câu lệnh trên trả cho ta kết quả về: đổi tên các biến
Country.name
Year
Population
Population.aged.10.to.14.years
Population.aged.15.to.19.years
Population.aged.20.to.29.years
Population.aged.30.to.39.years
Population.aged.40.to.49.years
thành các biến có tên lần lượt như sau:
count
Y
pop
p10to14
p15to19
p20to29
p30to39
p40to49
library(tidyverse) # gọi packsge tidyverse dùng để sử dụng toán tử pipe %>%
nth1 <-nth %>% select(count, Y, pop, p10to14, p15to19, p20to29, p30to39, p40to49 ) #1
nth1 <- nth1[nth1$Y==2000| nth1$Y==2004, ] #2
nth2<- nth1[nth1$count=='Vietnam' | nth1$count=='China' | nth1$count=='India' | nth1$count=='South Korea'| nth1$count=='Afghanistan', ] #3
=> Kết quả trả về:
nth1= chọn ra các cột ‘count, Y, pop, p10to14, p15to19, p20to29, p30to39, p40to49’ trong data nth để phân tích
nth1= chỉ lấy dữ liệu năm 2000 và năm 2004 thuộc biến ‘Y’ trong data nth1
nth2= chỉ lấy các nước ‘Vietnam’, ‘China’, ‘India’, ‘South Korea’, ‘Afghanistan’ thuộc biến ‘count’ trong data nth1 để phân tích
=> Từ đó ta có bảng Data nth2 mới về thống kê dân số của các nước Việt Nam, Trung Quốc, Ấn Độ, Hàn, Afghanistan trong năm 2000 và 2004 về các độ tuổi từ 10 đến 40 tuổi
Để dễ dàng hơn trong việc phân tích các dữ liệu về dân số, chúng ta sử dụng các lệnh về mã hóa dữ liệu. Các thao tác mã hóa dữ liệu giúp chúng ta chuyển đổi từ dữ liệu dạng này sang một dạng mới.
(sử dụng bảng data nth2)
nth2$p10to14.cc <- ifelse(nth2$p10to14 > 0.1*nth2$pop, 'dân số trẻ', 'dân số già') #1
nth2$pop.sl <- ifelse(nth2$pop>50000000, 'đông đúc', 'thưa thớt' ) #2
nth2$pop.sl1 <- case_when(nth2$pop < 50000000 ~ 'thấp', nth2$pop >= 50000000 & nth2$pop < 100000000 ~ 'trung bình ', nth2$pop > 100000000 ~ 'cao' ) #3
nth2$pop.sl2 <- cut(nth2$pop, breaks = c(0, 50000000,100000000, 10000000000), labels= c('kv1', 'kv2', 'kv3')) #4
=> Các câu lệnh trên hiện kết quả về dữ liệu dân số như sau: sử dụng data nth2 đã được rút trích
cột biến mới mang tên p10to14.cc: sử dụng lệnh ifelse-> cho kết quả dân số trẻ nếu giá trị biến p10to14 lớn hơn 0.1 lần biến pop, các trường hợp còn lại cho ra kết quả dân số già.
cột biến mới mang tên pop.sl: là cột biến chỉ mật độ dân số đông đúc hoặc thưa thớt. Sử dụng lệnh ifelse->cho kết quả đông đúc nếu tổng dân số (biến pop) lớn hơn 50000000, còn lại cho ra kq thưa thớt.
cột biến mới pop.sl1 sử dụng hàm case_when hỗ trợ mã hóa dữ liệu nhiều hơnn 2: nếu giá trị biến pop bé hơn 50000000 thì cho ra kq thấp, nếu giá trị biến pop lớn hơn hoặc bằng 50000000 và nhỏ hơn 100000000 thì cho kq là trung bình, còn nếu giá trị biến pop lớn hơn 100000000 thì cho ra kq cao.
pop.sl2 là cột biến mới dử dụng hàm cut dùng để chia dữ liệu theo biến pop thành 3 tổ theo từng khoảng giá trị sau: từ 0 đến 50.000.000 là kv1, từ 50.000.000 đến 100.000.000 là kv2, từ 100.000.000 đến 1.000.000.000 là kv3.
(sử dụng bảng data nth)
cut(nth$pop,3)
table(cut(nth$pop,3))
##
## (-7.91e+06,2.64e+09] (2.64e+09,5.27e+09] (5.27e+09,7.92e+09]
## 18024 209 55
=> Giải thích kết quả:
Sử dụng hàm cut() để chia dữ liệu trong biến tổng dân số pop thuộc data nth thành 3 nhóm theo số dân là: (-7.91e+06,2.64e+09], (2.64e+09,5.27e+09], (5.27e+09,7.92e+09]
sử dụng table() để thống kê tần suất xuất hiện của các nhóm dân số trên: (-7.91e+06,2.64e+09] xuất hiện với 18024 quan sát, (2.64e+09,5.27e+09] xuất hiện với 209 quan sát, (5.27e+09,7.92e+09] xuất hiện với 55 quan sát.
ntht <- nth2 %>% group_by(Y, count, pop.sl2) %>% summarise(n= n(), .groups = 'drop')
ntht
## # A tibble: 10 × 4
## Y count pop.sl2 n
## <int> <chr> <fct> <int>
## 1 2000 Afghanistan kv1 1
## 2 2000 China kv3 1
## 3 2000 India kv3 1
## 4 2000 South Korea kv1 1
## 5 2000 Vietnam kv2 1
## 6 2004 Afghanistan kv1 1
## 7 2004 China kv3 1
## 8 2004 India kv3 1
## 9 2004 South Korea kv1 1
## 10 2004 Vietnam kv2 1
=> Bảng tấn số với lệnh trên cho ra tần suất dữ liệu của các biến ‘count’, ‘Y’, ‘pop.sl2’. Câu lệnh summarise(n= n() cho ra số n tần suất của dữ liệu và .groups = ‘drop’ giúp chia nhóm dữ liệu
Sử dụng bảng data nth1 để thực hiện các thao tác đo lường dữ liệu
summary(nth1$pop)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.535e+03 4.285e+05 5.165e+06 1.609e+08 2.305e+07 6.476e+09
=>Hàm summary() cho ta được những dữ liệu sau:
sum(nth1$pop)
## [1] 81732823919
=> Hàm sum() chỉ tổng giá trị của biến pop
mean(nth1$pop,na.rm = T)
## [1] 160891386
=> Hàm mean() trả kết quả là giá trị trung bình của biến với na.rm = T để bỏ đi những giá trị không phù hợp
length(nth1$pop)
## [1] 508
=> length() độ dài biến pop hay đếm số quan sát trong biến
var(nth1$pop)
## [1] 5.045458e+17
=> Hàm var() chỉ phương sai của biến (hay bình phương độ lệch chuẩn ~ độ biến động, thay đổi, chênh lệch,…)
sd(nth$pop)
## [1] 588851231
=> Hàm sd() là độ lệc chuẩn (căn của phương sai)
median(nth1$pop)
## [1] 5165499
=> Hàm median() trả kết quả là trung vị của biến (hay có 50% giá trị nhỏ hơn và 50% giá trị lớn hơn giá trị biến đó)
quantile(nth1$pop, probs = c(.3,.6,.9))
## 30% 60% 90%
## 818994.3 8889042.8 124037545.2
=> Hàm phân vị: bộ dữ liệu biến pop có giá trị:
quantile_{30%}=818994.3 nghĩa là có 30% dữ liệu có giá trị bé hơn 818994.3
quantile_{60%}=8889042.8 nghĩa là có 60% dữ liệu có giá trị bé hơn 8889042.8
quantile_{90%}=124037545.2 nghĩa là có 90% dữ liệu có giá trị bé hơn 124037545.2
=> Đây là các câu lệnh tính toán các đặc trưng đo lường theo hai hoặc nhiều biến( hay gọi là theo nhóm)
tn <- nth %>% group_by(Y) %>% summarise(meanofpop= mean(pop))
tn
## # A tibble: 72 × 2
## Y meanofpop
## <int> <dbl>
## 1 1950 60829433.
## 2 1951 61935622.
## 3 1952 63125733.
## 4 1953 64387245.
## 5 1954 65692705.
## 6 1955 67059890.
## 7 1956 68452221.
## 8 1957 69895388.
## 9 1958 71372168.
## 10 1959 72758739.
## # ℹ 62 more rows
=> Giải thích các câu lệnh trên như sau:
tn1 <- nth %>% group_by(Y) %>% summarise(n = n(),medofpop= median(pop))
tn1
## # A tibble: 72 × 3
## Y n medofpop
## <int> <int> <dbl>
## 1 1950 254 2077509
## 2 1951 254 2151493
## 3 1952 254 2221408
## 4 1953 254 2279917
## 5 1954 254 2317102.
## 6 1955 254 2334936
## 7 1956 254 2352930.
## 8 1957 254 2371338.
## 9 1958 254 2390104
## 10 1959 254 2410098.
## # ℹ 62 more rows
=> Giải thích các câu lệnh trên như sau:
tn2 <- nth %>% group_by(count) %>% summarise(meanofpop= mean(pop))
tn2
## # A tibble: 254 × 2
## count meanofpop
## <chr> <dbl>
## 1 Afghanistan 16640671.
## 2 Africa (UN) 643444771.
## 3 Albania 2632759.
## 4 Algeria 23456439.
## 5 American Samoa 39194.
## 6 Andorra 43576.
## 7 Angola 13175864.
## 8 Anguilla 8906.
## 9 Antigua and Barbuda 68605.
## 10 Argentina 30799573.
## # ℹ 244 more rows
tn3 <- nth %>% group_by(Y,count) %>% summarise(meanofpop= mean(pop),.groups = 'drop')
tn3
## # A tibble: 18,288 × 3
## Y count meanofpop
## <int> <chr> <dbl>
## 1 1950 Afghanistan 7480464
## 2 1950 Africa (UN) 227549260
## 3 1950 Albania 1252587
## 4 1950 Algeria 9019866
## 5 1950 American Samoa 19057
## 6 1950 Andorra 6028
## 7 1950 Angola 4478186
## 8 1950 Anguilla 5036
## 9 1950 Antigua and Barbuda 45456
## 10 1950 Argentina 17017748
## # ℹ 18,278 more rows
=> Giải thích các câu lệnh trên như sau:
tn = giá trị trung bình của tổng dân số (biến pop) theo năm (biến Y)
tn1 = trung vị của tổng dân số (biến pop) theo năm (biến Y)
tn2 = giá trị trung bình của tổng dân số (biến pop) theo từng quốc gia hay khu vực (biến Y)
tn3 = giá trị trung binh của tổng dân số (biến pop) theo từng năm của từng quốc (biến Y, count)
Phân tích tình hình sản xuất nông nghiệp ở Ấn Độ đòi hỏi sự chú ý đến một số mục tiêu quan trọng để hiểu rõ về thị trường nông nghiệp của quốc gia này. Dưới đây là một số mục tiêu quan trọng cần chú ý:
Đánh giá mức độ hiệu quả của sản xuất nông nghiệp
Nghiên cứu về sự ảnh hưởng của các yếu tố như thời tiết, chất dinh dưỡng đất, và kỹ thuật canh tác đối với năng suất. Nghiên cứu sự phân bố đất đai ở Ấn Độ, cũng như đánh giá hiệu quả sử dụng đất đai trong nông nghiệp.
Xem xét ảnh hưởng của nông nghiệp đối với môi trường và phát triển các biện pháp bảo vệ môi trường trong sản xuất nông nghiệp.
Sử dụng các phương pháp thống kê mô tả dữ liệu:
Rút trích dữ liệu
Mã hóa dữ liệu
Lập bảng tần số
Tính toán các đặc trưng đo lường
Nhận xét kết quả
Bộ dữ liệu về tình hình nông nghiệp của Ấn Độ trong những năm cuối TK 19 đến nay. Dữ liệu được tải về từ Dataset Search
Nằm ở khu vực Tây Nam Á, Ấn Độ có diện tích tự nhiên gần 33 triệu km2, trong đó, diện tích đất nông nghiệp là 141,23 triệu ha với dân số trên 1 tỉ người, có truyền thống văn hóa, lịch sử lâu đời và thế mạnh về phát triển nông nghiệp. Lục địa này có những đồng bằng rộng lớn mà không một quốc gia nào trên thế giới có được. Chỉ riêng đồng bằng Ấn - Hằng, diện tích khoảng 775.000 km2 (gấp 2,3 lần diện tích Việt Nam) với điều kiện tự nhiên thuận lợi đã tạo nên vùng kinh tế trù phú.
Sau đây là dữ liệu về nền nông nghiệp của Ấn Độ đã được tải về
library(csv)
d <- read.csv(file= 'C:/Users/Admin/Downloads/India Agriculture Crop Production.csv')
Bảng dữ liệu cho ta biết các thông tin sau:
Ngành nông nghiệp là nguồn sinh kế chính của khoảng 58% dân số Ấn Độ. Mặc dù đóng góp của nó vào tổng sản phẩm quốc nội (GDP) đã giảm xuống dưới 20% và đóng góp của các ngành khác tăng với tốc độ nhanh hơn.
Bảng dữ liệu tổng quan trong năm 2020-2021 của nông sản ở Ấn Độ
library(flextable)
##
## Attaching package: 'flextable'
## The following object is masked from 'package:purrr':
##
## compose
library(DT)
library(tidyverse)
d1 <- d[d$Year=='2020-21', ]
d1 <- d1 %>% select(-c('Area.Units', 'Production.Units'))
datatable(d1)
Theo FAO (2020), Ấn Độ là nhà sản xuất gừng và đậu bắp lớn nhất trong số các loại rau và đứng thứ hai về sản xuất khoai tây, hành tây, súp lơ, brinjal và cải bắp. Và đây là bảng thống kê tổng sản lương theo từng loại nông sản năm 2020-2021 như sau:
library(tidyverse)
d1.s <- d1 %>% group_by(Crop) %>% summarise( tongSL = sum(Production))
datatable(d1.s)
Và cũng như Việt Nam, Ấn Độ cũng là một trong những nước sản xuất gạo lớn trên thế giới. Nhu cầu lớn về gạo trên thị trường toàn cầu đang tạo ra một môi trường tuyệt vời cho việc xuất khẩu các sản phẩm gạo của Ấn Độ.
Sản lượng gạo chiếm thị phần cao trong các loại nông sản của Ấn Độ với năng suất trung bình gần 2.4 tấn/ha trong năm 2020-2021.
d1.s1 <- d1[d1$Crop=='Rice', ]
mean(d1.s1$Yield)
## [1] 2.368601
Trong năm 2020-2021, do ảnh hưởng của đại dịch COVID trên toàn cầu tình hình năng suất gạo của Ấn Độ không cao so với các nước khác mặc dù là một nước có diện tích trồng lúa lớn nhất thế giới. Nếu năng suất đạt trên 2.4 tấn/ha được coi là Đạt, còn lại là Không Đạt so với năng suất trung bình.
d1.s1$Yield.NS <- ifelse(d1.s1$Yield > 2.4, 'ĐẠT', 'KHÔNG ĐẠT')
datatable(d1.s1)
So với các năm về trước năng suất gạo của Ấn Độ có phần biến động:
d1.s2 <- d[d$Crop=='Rice', ]
d1.s2 <- d1.s2 %>% group_by(Year) %>% summarise( NSTB= mean(Yield), .groups='drop')
datatable(d1.s2)
Phân bố đất đai ở Ấn Độ rất đa dạng và phức tạp, đó là kết quả của sự đa dạng về khí hậu, địa hình và văn hóa trên khắp quốc gia.Từ đó hình thành nên nhiều mùa vụ khác nhau ở Ấn Độ, đồng thời cũng là lợi thế giúp nông nghiệp Ấn Độ đa dạng hóa các loại nông sản trên quốc gia này. Sản lượng nông sản theo từng mùa vụ ở Ấn ĐỘ phân bổ như sau:
d1.s3 <- d1 %>% group_by(Season) %>% summarise( tongSL= sum(Production), .groups = 'drop')
table(d1.s3)
## tongSL
## Season 55563 1009727 1048137 8063799
## Kharif 0 1 0 0
## Rabi 0 0 1 0
## Summer 1 0 0 0
## Whole Year 0 0 0 1
Do ảnh hưởng về các vấn đề tự nhiên cũng như nhu cầu sử dụng của con người, diện tích đất trồng trọt cũng thay đổi theo năm tháng, năm 2020-2021 tổng diện tích đất nông nghiệp là: 917916 hec-ta
sum(d1$Area)
## [1] 917916
Nông nghiệp ở Ấn Độ đóng một vai trò quan trọng trong kinh tế của quốc gia này và cung cấp nguồn sống cho một lượng lớn dân số. Ấn Độ rất đa dạng và phong phú với nhiều loại cây trồng, Đất đai phong phú và đa dạng về khí hậu hỗ trợ cho việc trồng trọt nhiều loại cây như lúa, hạt tiêu, cà phê, và rau củ quả.
Trải qua quá trình cải cách về nông nghiệp, Ấn Độ đang ngày càng phát triển hơn tận dụng mọi lợi thế về tự nhiên và nguồn lực lao động để xây dựng một nền nông nghiệp hoàn chỉnh riêng biệt.