L23_PopDev

Xử lý dữ liệu cơ bản

Library

Tải các thư viện cần thiết vào R. Một số máy của các bạn khi tải package tidyverse chưa đầy đủ khi chạy một số lệnh sẽ báo lỗi không tìm thấy function, các bạn có thể tải thêm và loading library: dplyr

library(tidyverse)
Warning: package 'tidyverse' was built under R version 4.4.1
── 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.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ 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

Data

haven::read_dta("C:\\Users\\Huynh Chuong\\Desktop\\University\\UEH\\2024\\Data\\MUC1A.dta") |>
  head(5) # Đọc file có đường dẫn ở trong () sau đó in ra 5 dòng đầu tiên
# A tibble: 5 × 26
  tinh      huyen    xa diaban  hoso m1ama m1ac2 m1ac3 m1ac4a m1ac4b m1ac5 m1ac6
  <dbl+lbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl+>  <dbl> <dbl> <dbl>
1 10 [Tỉnh…    89  3055      7     1     1 NA    NA    NA         NA    NA NA   
2 10 [Tỉnh…    89  3055      7     1     2 NA    NA    NA         NA    NA NA   
3 10 [Tỉnh…    89  3055      7     1     3 NA    NA    NA         NA    NA NA   
4 10 [Tỉnh…    89  3055      7     1     4 NA    NA    NA         NA    NA NA   
5 10 [Tỉnh…    89  3055      7     2     1 NA    NA    NA         NA    NA NA   
# ℹ 14 more variables: m1ac7a <dbl+lbl>, m1ac7b <dbl+lbl>, m1ac7c <dbl+lbl>,
#   m1ac8 <dbl+lbl>, m1ac9 <dbl+lbl>, m1ac10 <dbl+lbl>, m1ama1 <dbl>,
#   m1ac11 <dbl+lbl>, m1ac12 <dbl+lbl>, m1ac13 <dbl+lbl>, m1ac14a <dbl+lbl>,
#   m1ac14b <dbl>, m1ac15 <dbl+lbl>, m1ac1 <chr>

Gán dữ liệu

Muc1A <- haven::read_dta("C:\\Users\\Huynh Chuong\\Desktop\\University\\UEH\\2024\\Data\\MUC1A.dta") 

Thông tin biến

names(Muc1A)
 [1] "tinh"    "huyen"   "xa"      "diaban"  "hoso"    "m1ama"   "m1ac2"  
 [8] "m1ac3"   "m1ac4a"  "m1ac4b"  "m1ac5"   "m1ac6"   "m1ac7a"  "m1ac7b" 
[15] "m1ac7c"  "m1ac8"   "m1ac9"   "m1ac10"  "m1ama1"  "m1ac11"  "m1ac12" 
[22] "m1ac13"  "m1ac14a" "m1ac14b" "m1ac15"  "m1ac1"  

Xem cấu trúc dữ liệu

str(Muc1A)
tibble [173,164 × 26] (S3: tbl_df/tbl/data.frame)
 $ tinh   : dbl+lbl [1:173164] 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,...
   ..@ label       : chr "Tỉnh"
   ..@ format.stata: chr "%29.0g"
   ..@ labels      : Named num [1:63] 1 2 4 6 8 10 11 12 14 15 ...
   .. ..- attr(*, "names")= chr [1:63] "Thành phố Hà Nội" "Tỉnh Hà Giang" "Tỉnh Cao Bằng" "Tỉnh Bắc Kạn" ...
 $ huyen  : num [1:173164] 89 89 89 89 89 89 89 89 89 89 ...
  ..- attr(*, "label")= chr "Huyện"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ xa     : num [1:173164] 3055 3055 3055 3055 3055 ...
  ..- attr(*, "label")= chr "Xã"
  ..- attr(*, "format.stata")= chr "%12.0g"
 $ diaban : num [1:173164] 7 7 7 7 7 7 7 7 7 7 ...
  ..- attr(*, "label")= chr "Địa bàn"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ hoso   : num [1:173164] 1 1 1 1 2 2 2 2 3 3 ...
  ..- attr(*, "label")= chr "Hộ số"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ m1ama  : num [1:173164] 1 2 3 4 1 2 3 4 1 2 ...
  ..- attr(*, "label")= chr "Mã hiệu"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ m1ac2  : dbl+lbl [1:173164] NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
   ..@ label       : chr "2. Giới tính"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:2] 1 2
   .. ..- attr(*, "names")= chr [1:2] "Nam" "Nữ"
 $ m1ac3  : dbl+lbl [1:173164] NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
   ..@ label       : chr "3. Quan hệ"
   ..@ format.stata: chr "%19.0g"
   ..@ labels      : Named num [1:8] 1 2 3 4 5 6 7 9
   .. ..- attr(*, "names")= chr [1:8] "Chủ hộ" "Vợ/chồng" "Con" "Bố mẹ" ...
 $ m1ac4a : dbl+lbl [1:173164] NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
   ..@ label       : chr "4. Tháng sinh"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num -2
   .. ..- attr(*, "names")= chr "KB"
 $ m1ac4b : num [1:173164] NA NA NA NA NA NA NA NA NA NA ...
  ..- attr(*, "label")= chr "Năm sinh"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ m1ac5  : num [1:173164] NA NA NA NA NA NA NA NA NA NA ...
  ..- attr(*, "label")= chr "5. Tuổi"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ m1ac6  : dbl+lbl [1:173164] NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
   ..@ label       : chr "6.Có giấy khai sinh"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 9
   .. ..- attr(*, "names")= chr [1:3] "Có" "Không" "NR"
 $ m1ac7a : dbl+lbl [1:173164] NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
   ..@ label       : chr "7.Mã bố"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num -1
   .. ..- attr(*, "names")= chr "NR"
 $ m1ac7b : dbl+lbl [1:173164] NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
   ..@ label       : chr "7.Mã mẹ"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num -1
   .. ..- attr(*, "names")= chr "NR"
 $ m1ac7c : dbl+lbl [1:173164] NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
   ..@ label       : chr "7.Mã NCS"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num -1
   .. ..- attr(*, "names")= chr "NR"
 $ m1ac8  : dbl+lbl [1:173164] NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
   ..@ label       : chr "8. Hôn nhân"
   ..@ format.stata: chr "%22.0g"
   ..@ labels      : Named num [1:6] 1 2 3 4 5 9
   .. ..- attr(*, "names")= chr [1:6] "Chưa vợ/chồng" "Đang có vợ/chồng" "Goá" "Ly hôn" ...
 $ m1ac9  : dbl+lbl [1:173164] NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
   ..@ label       : chr "9. Tháng ở hộ"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num -1
   .. ..- attr(*, "names")= chr "KXD"
 $ m1ac10 : dbl+lbl [1:173164] NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
   ..@ label       : chr "10. Lý do không sống trong hộ"
   ..@ format.stata: chr "%34.0g"
   ..@ labels      : Named num [1:7] 1 2 3 4 5 6 9
   .. ..- attr(*, "names")= chr [1:7] "Học sinh đi học trong nước" "Cán bộ đi học trong nước" "Chữa bệnh trong/ngoài nước" "Mới sinh, mới chuyển đến" ...
 $ m1ama1 : num [1:173164] NA NA NA NA NA NA NA NA NA NA ...
  ..- attr(*, "label")= chr "Mã hiệu"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ m1ac11 : dbl+lbl [1:173164] 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 2, 1, 1, 2, 2, 1, ...
   ..@ label       : chr "11.Tỉnh sinh ra"
   ..@ format.stata: chr "%29.0g"
   ..@ labels      : Named num [1:65] -1 1 2 4 6 8 10 11 12 14 ...
   .. ..- attr(*, "names")= chr [1:65] "NR" "Thành phố Hà Nội" "Tỉnh Hà Giang" "Tỉnh Cao Bằng" ...
 $ m1ac12 : dbl+lbl [1:173164] 1, 2, 3, 3, 1, 2, 3, 3, 1, 2, 3, 3, 6, 1, 2, 3, 1, ...
   ..@ label       : chr "12.Đăng ký hộ khẩu"
   ..@ format.stata: chr "%28.0g"
   ..@ labels      : Named num [1:6] 1 2 3 4 5 9
   .. ..- attr(*, "names")= chr [1:6] "Trong xã phường" "Nơi khác trong tỉnh" "Tỉnh khác" "Khác" ...
 $ m1ac13 : dbl+lbl [1:173164]  4,  8,  9,  8, 12, 10, 12,  4,  6,  5, 12, 12, 10,...
   ..@ label       : chr "13. Tỉnh đăng ký HK"
   ..@ format.stata: chr "%29.0g"
   ..@ labels      : Named num [1:65] -1 1 2 4 6 8 10 11 12 14 ...
   .. ..- attr(*, "names")= chr [1:65] "NR" "Thành phố Hà Nội" "Tỉnh Hà Giang" "Tỉnh Cao Bằng" ...
 $ m1ac14a: dbl+lbl [1:173164] 197, 198, 200, 200, 198, 198, 201, 201, 196, 196, 1...
   ..@ label       : chr "14. Năm ở tỉnh"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num -1
   .. ..- attr(*, "names")= chr "NR"
 $ m1ac14b: num [1:173164] 50 10 30 90 50 30 30 70 30 40 ...
  ..- attr(*, "label")= chr "14. Tháng ở tỉnh"
  ..- attr(*, "format.stata")= chr "%8.0g"
 $ m1ac15 : dbl+lbl [1:173164] 4, 3, 1, 1, 3, 3, 0, 0, 5, 5, 2, 2, 0, 5, 5, 2, 3, ...
   ..@ label       : chr "15. Trong 30 ngày qua có sử dụng internet!"
   ..@ format.stata: chr "%8.0g"
   ..@ labels      : Named num [1:3] 1 2 9
   .. ..- attr(*, "names")= chr [1:3] "Có" "Không" "NR"
 $ m1ac1  : chr [1:173164] "4212 1" "8212 1" "6112 1" "0 12 2" ...
  ..- attr(*, "label")= chr "1. Họ tên"
  ..- attr(*, "format.stata")= chr "%100s"

Khám phá dữ liệu

Muc1A |> 
  select(m1ac5) |>
  summary()
     m1ac5       
 Min.   :  0.00  
 1st Qu.: 14.00  
 Median : 33.00  
 Mean   : 33.82  
 3rd Qu.: 50.00  
 Max.   :110.00  
 NA's   :226     

Tôi đang muốn xem độ tuổi theo từng tỉnh của cuộc điều tra

Muc1A |>
  select(tinh, m1ac5) |>
  group_by(tinh) |>
  summarise(Tuoi_TB=mean(m1ac5, na.rm=T),
            Tuoi_Max=max(m1ac5, na.rm=T),
            Tuoi_Min=min(m1ac5, na.rm=T),
            Tuoi_SD=sd(m1ac5, na.rm=T))
# A tibble: 63 × 5
   tinh                  Tuoi_TB Tuoi_Max Tuoi_Min Tuoi_SD
   <dbl+lbl>               <dbl>    <dbl>    <dbl>   <dbl>
 1  1 [Thành phố Hà Nội]    34.0      103        0    22.3
 2  2 [Tỉnh Hà Giang]       28.4       97        0    20.3
 3  4 [Tỉnh Cao Bằng]       31.9       96        0    21.2
 4  6 [Tỉnh Bắc Kạn]        34.4       95        0    21.0
 5  8 [Tỉnh Tuyên Quang]    33.1      107        0    21.7
 6 10 [Tỉnh Lào Cai]        28.7       97        0    19.9
 7 11 [Tỉnh Điện Biên]      27.6      104        0    20.2
 8 12 [Tỉnh Lai Châu]       27.2       93        0    19.2
 9 14 [Tỉnh Sơn La]         29.5      102        0    20.7
10 15 [Tỉnh Yên Bái]        31.3       99        0    21.5
# ℹ 53 more rows

Thống kê giới tính trong dữ liệu quan sát

Muc1A |>
  select(m1ac2) |>
  table()
m1ac2
    1     2 
85496 87442 

Đổi mã hóa cho dễ nhớ, dễ nhìn

Muc1A |>
  select(m1ac2) |>
  mutate(Gioitinh=if_else(m1ac2==1,
                          "Nam","Nu")) |>
  select(Gioitinh) |>
  table()
Gioitinh
  Nam    Nu 
85496 87442 

Bảng tỷ lệ phần trăm

Muc1A |>
  select(m1ac2) |>
  mutate(Gioitinh=if_else(m1ac2==1,
                          "Nam","Nu")) |>
  select(Gioitinh) |>
  table()|> 
  prop.table() |>
  round(digits = 4) *100
Gioitinh
  Nam    Nu 
49.44 50.56 

Tạo biến giới tính và gán biến giới tính vào dữ liệu đã có

Muc1A |> 
  mutate(Gioitinh=if_else(m1ac2==1,
                          "Nam","Nu"))  -> Muc1A
Muc1A |> 
  select(Gioitinh) |>
  table()|> 
  prop.table() |>
  round(digits = 4) *100
Gioitinh
  Nam    Nu 
49.44 50.56 

Xem thông tin về giới tính chủ hộ

Bước 1: Lọc chỉ có quan sát chủ hộ

Bước 2: Thống kê giới tính

Muc1A |>
  filter(m1ac3==1) |> # Lọc thông tin quan sát là chủ hộ (mã hóa là 1, xem trong bảng hỏi)
  select(Gioitinh) |>
  table() |>
  prop.table() |>
  round(digits = 4) *100
Gioitinh
  Nam    Nu 
73.73 26.27 

Xem thống kê độ tuổi theo tình trạng hôn nhân của chủ hộ Bước 1: Lọc thông tin chủ hộ

Bước 2: Nhóm (group) theo tình trạng hôn nhân

Bước 3: Thống kê theo độ tuổi

Muc1A |>
  filter(m1ac3==1) |>
  group_by(m1ac8) |>
  summarise(Tuoi_TB=mean(m1ac5, na.rm=T),
            Tuoi_min=min(m1ac5, na.rm=T),
            Tuoi_max=max(m1ac5, na.rm=T),
            Tuoi_sd=sd(m1ac5,na.rm=T))
# A tibble: 5 × 5
  m1ac8                Tuoi_TB Tuoi_min Tuoi_max Tuoi_sd
  <dbl+lbl>              <dbl>    <dbl>    <dbl>   <dbl>
1 1 [Chưa vợ/chồng]       43.8       15       90    16.6
2 2 [Đang có vợ/chồng]    49.1       19      103    12.8
3 3 [Goá]                 65.2       24      105    13.3
4 4 [Ly hôn]              47.1       19       96    10.8
5 5 [Ly thân]             49.4       26       79    11.8
Muc1A |>
  filter(m1ac3==1) |>
  mutate(Honnhan=if_else(m1ac8==1, "1.Chưa kết hôn",
                         if_else(m1ac8==2, "2.Đã kết hôn", "3.Khác"))) |>
  group_by(Honnhan) |>
  summarise(Tuoi_TB=round(mean(m1ac5, na.rm=T), digits=2),
            Tuoi_min=min(m1ac5, na.rm=T),
            Tuoi_max=max(m1ac5, na.rm=T),
            Tuoi_sd=round(sd(m1ac5,na.rm=T), digits=2))
# A tibble: 3 × 5
  Honnhan        Tuoi_TB Tuoi_min Tuoi_max Tuoi_sd
  <chr>            <dbl>    <dbl>    <dbl>   <dbl>
1 1.Chưa kết hôn    43.8       15       90    16.6
2 2.Đã kết hôn      49.2       19      103    12.8
3 3.Khác            61.0       19      105    14.8

Xem tình trạng hôn nhân của chủ hộ theo giới tính

Muc1A |>
  filter(m1ac3==1) |>
  mutate(Honnhan=if_else(m1ac8==1, "1.Chưa kết hôn",
                         if_else(m1ac8==2, "2.Đã kết hôn", "3.Khác"))) |>
  group_by(Gioitinh, Honnhan) |>
  summarise(Tuoi_TB=round(mean(m1ac5, na.rm=T), digits=2),
            Tuoi_min=min(m1ac5, na.rm=T),
            Tuoi_max=max(m1ac5, na.rm=T),
            Tuoi_sd=round(sd(m1ac5,na.rm=T), digits=2))
`summarise()` has grouped output by 'Gioitinh'. You can override using the
`.groups` argument.
# A tibble: 6 × 6
# Groups:   Gioitinh [2]
  Gioitinh Honnhan        Tuoi_TB Tuoi_min Tuoi_max Tuoi_sd
  <chr>    <chr>            <dbl>    <dbl>    <dbl>   <dbl>
1 Nam      1.Chưa kết hôn    35.5       15       87    12.5
2 Nam      2.Đã kết hôn      49.5       19      103    12.8
3 Nam      3.Khác            58.9       24      105    16.6
4 Nu       1.Chưa kết hôn    49.4       15       90    16.6
5 Nu       2.Đã kết hôn      46.8       19       86    12.5
6 Nu       3.Khác            61.6       19      103    14.2

Xem thống kê chủ hộ với tình trạng giới tính và kết hôn

Muc1A |>
  filter(m1ac3==1) |>
  mutate(Honnhan=if_else(m1ac8==1, "1.Chưa kết hôn",
                         if_else(m1ac8==2, "2.Đã kết hôn", "3.Khác"))) |>
  select (Gioitinh, Honnhan) |>
  table()
        Honnhan
Gioitinh 1.Chưa kết hôn 2.Đã kết hôn 3.Khác
     Nam            647        32314   1678
     Nu             946         5146   6249
Muc1A |>
  filter(m1ac3==1) |>
  mutate(Honnhan=if_else(m1ac8==1, "1.Chưa kết hôn",
                         if_else(m1ac8==2, "2.Đã kết hôn", "3.Khác"))) |>
  select (Gioitinh, Honnhan) |>
  table() |>
  prop.table() |>
  round(digits = 4)*100
        Honnhan
Gioitinh 1.Chưa kết hôn 2.Đã kết hôn 3.Khác
     Nam           1.38        68.78   3.57
     Nu            2.01        10.95  13.30

Muốn xem tỷ lệ kết hôn của từng nhóm giới tính

Muc1A |>
  filter(m1ac3==1) |>
  mutate(Honnhan=if_else(m1ac8==1, "1.Chưa kết hôn",
                         if_else(m1ac8==2, "2.Đã kết hôn", "3.Khác"))) |>
  select (Gioitinh, Honnhan) |>
  table() |>
  prop.table(1) |>  # Số 1 nghĩa là tính phần trăm theo hàng
  round(digits = 4)*100
        Honnhan
Gioitinh 1.Chưa kết hôn 2.Đã kết hôn 3.Khác
     Nam           1.87        93.29   4.84
     Nu            7.67        41.70  50.64
Muc1A |>
  filter(m1ac3==1) |>
  mutate(Honnhan=if_else(m1ac8==1, "1.Chưa kết hôn",
                         if_else(m1ac8==2, "2.Đã kết hôn", "3.Khác"))) |>
  select (Gioitinh, Honnhan) |>
  table() |>
  prop.table(2) |>  # Số 2 nghĩa là tính phần trăm theo cột
  round(digits = 4)*100
        Honnhan
Gioitinh 1.Chưa kết hôn 2.Đã kết hôn 3.Khác
     Nam          40.62        86.26  21.17
     Nu           59.38        13.74  78.83

Trích và gộp dữ liệu

Muc1A <- haven::read_dta("C:\\Users\\Huynh Chuong\\Desktop\\University\\UEH\\2024\\Data\\MUC1A.dta") 

Trích dữ liệu Giáo dục

Lưu ý trong bộ dữ liệu các biến xác định cho từng quan sát. Ví dụ: Cần lấy dữ liệu độ tuổi thì phải đi kèm với các biến định danh quan sát thành viên đó là ai? Trong dữ liệu VHLSS, các biến định danh bao gồm: Tỉnh, huyện , xã, địa bàn, hộ số, mã thành viên

# Lấy dữ liệu tuổi
Muc1A |> 
  select(tinh, huyen, xa, diaban,hoso,m1ama,m1ac5) |>
  rename("tuoi"="m1ac5") -> Data_Tuoi

Dữ liệu giáo dục

Muc2V <- haven:: read_dta("C:\\Users\\Huynh Chuong\\Desktop\\University\\UEH\\2024\\Data\\2 - Data\\VHLSS2020_Household_Data\\MUC2V.dta")
Muc2V |>
  select(tinh, huyen, xa, diaban,hoso,m2vma,m2vc2a, m2vc5) |>
  rename("bangcap"="m2vc2a",
         "Codihockhong"="m2vc5") -> Data_giaoduc

Ghép dữ liệu:

Data_Tuoi |>
  inner_join(Data_giaoduc,
             by=c("tinh"="tinh",
                  "huyen"="huyen",
                  "xa"="xa",
                  "diaban"="diaban",
                  "hoso"="hoso",
                  "m1ama"="m2vma")) -> Dataghep

Tạo ra biến Không tiếp cận được giáo dục của thành viên từ 15 tuổi trở lên

Dataghep |>
  mutate(KhongtiepcanGD_Adult=if_else(tuoi>=15 & bangcap<2 & Codihockhong==2, 1,0),
         KhongtiepcanGD_Child=if_else((tuoi <15 & tuoi>=5) &Codihockhong==2,1,0)) -> Dataghep 
# 1 khong tiep can GD
# 0 Co tiep can GD

Tạo ra biến không tiếp cận được giáo dục của hộ (Điều kiện là, có ít nhất - at least one member- là 1 thành viên không tiếp cận giáo dục -> không tiếp cận)

Dataghep |>
  group_by(tinh, huyen, xa, diaban, hoso) |>
  mutate(TiepcanGDHo=sum(KhongtiepcanGD_Adult, na.rm = T),
         TiepcanGDHo_Children=sum(KhongtiepcanGD_Child, na.rm = T),
         ) |>
  mutate(AdultEdu=if_else(TiepcanGDHo>=1, 1,0),
         ChilSchool=if_else(TiepcanGDHo_Children>=1, 1,0)) -> Data_Edu
# 1: Không tiếp cận được giáo dục
# 0: Tiếp cận được giáo dục

Lọc thông tin ở cấp độ hộ: Nghĩa là mỗi 1 hộ là 1 quan sát, và chọn dữ liệu cần lấy

Data_Edu |>
  select(tinh, huyen, xa, diaban,hoso,AdultEdu,ChilSchool) |>
  distinct(tinh,huyen,xa,diaban,hoso,.keep_all = T) ->Data_EduHo

Yêu cầu: Tạo ra biến Health insurance theo điều kiện đã cho trước. Ghép với dữ liệu Data_EduHo tạo bộ dữ liệu mới Data_Ho

Muc3C <- haven:: read_dta("C:\\Users\\Huynh Chuong\\Desktop\\University\\UEH\\2024\\Data\\2 - Data\\VHLSS2020_Household_Data\\MUC3C.dta")
Muc3C |> 
  select(tinh,huyen,xa,diaban,hoso,m3ma1, m3c8a, m3c8b) |>
  mutate(KhongcoIns= if_else(m3c8a>=1 | m3c8b>=1, 0,1))-> DatIn
# 0: Có bảo hiểm
# 1: Không có bảo hiểm
Data_Tuoi|>
  left_join(DatIn,
            by=c("tinh"="tinh",
                  "huyen"="huyen",
                  "xa"="xa",
                  "diaban"="diaban",
                  "hoso"="hoso",
                  "m1ama"="m3ma1")) -> DatInGhep
DatInGhep |>
  mutate(KhongcoBH= if_else(tuoi>=6 & KhongcoIns==0,0,1))-> DulieuHoBaohiem
DulieuHoBaohiem |> 
  group_by(tinh, huyen,xa,diaban,hoso) |>
  mutate(KhongcoBH_Ho=sum(KhongcoBH, na.rm = T))|>
  mutate(KhongcoIns_Ho=if_else(KhongcoBH_Ho==0,0,1)) |>
  select(tinh, huyen, xa, diaban,hoso, KhongcoIns_Ho) |>
  distinct(tinh, huyen, xa, diaban,hoso,.keep_all = T) -> HoInsurance
# 0: Có bảo hiểm
# 1: Không có bảo hiểm

Ghep EduHo với Ininsurance

Data_EduHo |>
  full_join(HoInsurance,
            by=c("tinh"="tinh",
                  "huyen"="huyen",
                  "xa"="xa",
                  "diaban"="diaban",
                  "hoso"="hoso")) -> DataHo