Nhiệm vụ 3.1

Tóm tắt

Nhiệm vụ 3.1 tiến hành thực hiện các thao tác đã học trên bộ dữ liệu trong file “population-and-demography.csv”. Đây là một dataset thông kê hơn 100 quốc gia trên thế giới về dân số có tuổi từ dưới 1 đến hơn 100 tuổi (bộ dữ liệu lấy mốc từ năm 1950-20221)

Mô tả về dataset

  • Dataset bao gồm 18288 quan sát và 24 biến (1 biến định tính và 23 biến định lượng)
  • Country name: Tên quốc gia
  • Year: năm
  • Population: dân số
  • Population of children under the age of 1: dân số trẻ em dưới 1 tuổi
  • Population of children under the age of 5: dân số trẻ em dưới 5 tuổi
  • Population of children under the age of 15: dân số trẻ em 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: số dân từ 15 đến 64 tuổi
  • Population older than 15 years: dân số trên 15 tuổi
  • Population older than 18 years: dân số trên 18 tuổi
  • Population at age 1: dân số 1 tuổi
  • Population aged 1 to 4 years: dân số 1 đến 4 tuổi
  • Population aged 5 to 9 years: dân số 5 đến 9 tuổi
  • Population aged 10 to 14 years: dân số 10 đến 14 tuổi
  • Population aged 15 to 19 years: dân số 15 đến 19 tuổi
  • Population aged 20 to 29 years: dân số 20 đến 29 tuổi
  • Population aged 30 to 39 years: dân số 30 đến 39 tuổi
  • Population aged 40 to 49 years: dân số 40 đến 49 tuổi
  • Population aged 50 to 59 years: dân số 50 đến 59 tuổi
  • Population aged 60 to 69 years: dân số 60 đến 69 tuổi
  • Population aged 70 to 79 years: dân số 70 đến 79 tuổi
  • Population aged 80 to 89 years: dân số 80 đến 89 tuổi
  • Population aged 90 to 99 years: dân số 90 đến 99 tuổi
  • Population older than 100 years: dân số hơn 100 tuổi

Cài đặt và load gói dataset vào object

# Để load gói dataset từ file csv vào Rmd ta dùng lệnh: tcd <- read.csv(file.choose(), header = T)
tcd <- read.csv("C:/Users/ADMIN/Downloads/population-and-demography.csv", header = T)
datatable(tcd)
# Dùng lệnh dim() để kiểm tra bộ datasets đã chọn có bao nhiêu quan sát va
dim(tcd)
## [1] 18288    24

Đổi tên cho các biến của dataset đã chọn

# Ta sủ dụng lệnh names() để thay đổi tên biến của dataset để dễ dàng thao tác 

names(tcd) <- c('Name','Y','P','CU1','CU5','CU15','U25','15T64','O15','O18','P1','1T4','5T9','10T14','15T19','20T29','30T39','40T49','50T59','60T69','70T79','80T89','90T99','O100')
datatable(tcd)

Rút trích dữ liệu cần thiết theo yêu cầu

Chọn ít nhất 5 quốc gia, 5 độ tuổi và tổng dân số để phân tích

# Sử dụng lệnh %>%filter để gọi ra tên 5 quốc gia trong tổng dataset lần lượt ('China','Brazil','Andorra','Singapore','Indonesia'), lệnh select() để chọn và trích xuất  5 độ tuổi (10-14 tuổi, 15-19 tuổi, 20-29 tuổi, 30-39 tuổi, 40-49 tuổi ) và tổng dân số của lần lượt 5 quốc gia đã chọn    

tcd1 <- tcd%>%filter(Name == 'China'| Name == 'Brazil'|Name =='Andorra'|Name =='Singapore'|Name =='Indonesia')%>% select(Name,P,'10T14','15T19','20T29','30T39','40T49')
datatable(tcd1)

Mã hóa dữ liệu

  1. Sử dụng lệnh tcd1$Name.Coded <- ifelse() để mã hóa
# Mã hóa dữ liệu từ dataset sao cho dữ liệu thu được chỉ hiện thị quan sát 'Name' và quốc gia hiển thị là 'China' ( từ qian sát 145-216 ), các quốc gia còn lại hiển thị là 'Not China '
t <- tcd1$Name.Coded <- ifelse(tcd1$Name == 'China','China','Not China')
t
##   [1] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##   [7] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [13] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [19] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [25] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [31] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [37] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [43] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [49] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [55] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [61] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [67] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [73] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [79] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [85] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [91] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
##  [97] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [103] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [109] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [115] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [121] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [127] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [133] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [139] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [145] "China"     "China"     "China"     "China"     "China"     "China"    
## [151] "China"     "China"     "China"     "China"     "China"     "China"    
## [157] "China"     "China"     "China"     "China"     "China"     "China"    
## [163] "China"     "China"     "China"     "China"     "China"     "China"    
## [169] "China"     "China"     "China"     "China"     "China"     "China"    
## [175] "China"     "China"     "China"     "China"     "China"     "China"    
## [181] "China"     "China"     "China"     "China"     "China"     "China"    
## [187] "China"     "China"     "China"     "China"     "China"     "China"    
## [193] "China"     "China"     "China"     "China"     "China"     "China"    
## [199] "China"     "China"     "China"     "China"     "China"     "China"    
## [205] "China"     "China"     "China"     "China"     "China"     "China"    
## [211] "China"     "China"     "China"     "China"     "China"     "China"    
## [217] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [223] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [229] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [235] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [241] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [247] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [253] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [259] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [265] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [271] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [277] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [283] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [289] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [295] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [301] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [307] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [313] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [319] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [325] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [331] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [337] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [343] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [349] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
## [355] "Not China" "Not China" "Not China" "Not China" "Not China" "Not China"
  1. Sử dụng lệnh tcd1$Name.Coded1 <- recode() để mã hóa
# Kết quả thu được sau khi mã hóa là dữ liệu hiển thị quan sát 'Name' và tên quốc gia tương ứng là Andorra-KV1, China-KV2, các quốc gia còn lại hiển thị tên bình thường 
t1 <- tcd1$Name.Coded1 <- recode(tcd1$Name,Andorra = 'KV1', China = 'KV2')
t1
##   [1] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##   [7] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##  [13] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##  [19] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##  [25] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##  [31] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##  [37] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##  [43] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##  [49] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##  [55] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##  [61] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##  [67] "KV1"       "KV1"       "KV1"       "KV1"       "KV1"       "KV1"      
##  [73] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
##  [79] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
##  [85] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
##  [91] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
##  [97] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
## [103] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
## [109] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
## [115] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
## [121] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
## [127] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
## [133] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
## [139] "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"    "Brazil"   
## [145] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [151] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [157] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [163] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [169] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [175] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [181] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [187] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [193] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [199] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [205] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [211] "KV2"       "KV2"       "KV2"       "KV2"       "KV2"       "KV2"      
## [217] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [223] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [229] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [235] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [241] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [247] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [253] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [259] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [265] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [271] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [277] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [283] "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia" "Indonesia"
## [289] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
## [295] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
## [301] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
## [307] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
## [313] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
## [319] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
## [325] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
## [331] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
## [337] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
## [343] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
## [349] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
## [355] "Singapore" "Singapore" "Singapore" "Singapore" "Singapore" "Singapore"
# Đổi tên các biến để dễ thao tác
names(tcd1) <- c('Name','P','TF','TN','TWN','THN','FN')
datatable(tcd1) 
  1. Sử dụng lệnh tcd1$TF.Coded <- ifelse() để mã hóa
# Ta cần đổi lại tên biến để dễ thao tác sau đó dùng lệnh để cho ra kết quả thu được là: dân số từ 10-14 tuổi có hơn 100000 dân số sẽ hiển thị là 'Đông' còn ít hơn 100000 dân số sẽ hiển thị là 'Không đông' 
names(tcd1) <- c('Name','P','TF','TN','TWN','THN','FN')
t2 <- tcd1$TF.Coded <- ifelse(tcd1$TF >= 100000, 'Đông', 'Không đông')
t2
##   [1] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##   [6] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [11] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [16] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [21] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [26] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [31] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [36] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [41] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [46] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [51] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [56] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [61] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [66] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [71] "Không đông" "Không đông" "Đông"       "Đông"       "Đông"      
##  [76] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
##  [81] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
##  [86] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
##  [91] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
##  [96] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [101] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [106] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [111] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [116] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [121] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [126] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [131] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [136] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [141] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [146] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [151] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [156] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [161] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [166] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [171] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [176] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [181] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [186] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [191] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [196] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [201] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [206] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [211] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [216] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [221] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [226] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [231] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [236] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [241] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [246] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [251] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [256] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [261] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [266] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [271] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [276] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [281] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [286] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [291] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [296] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [301] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [306] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [311] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [316] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [321] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [326] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [331] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [336] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [341] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [346] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [351] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [356] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"
  1. Sử dụng lệnh tcd1$TF.Coded1 <- ifelse() để mã hóa
# Kết quả thu được sau khi dùng lệnh là: những người có độ tuổi từ 10-14 tuổi nếu có từ hơn 100000 đến dưới 150000 dân số thì sẽ hiển thị 'Nhận' còn ngoài khoảng trên thì hiển thị 'Loại' 
t3 <- tcd1$TF.Coded1 <- ifelse(tcd1$TF >= 100000 & tcd1$TF <= 150000, 'Nhận', 'Loại')
t3
##   [1] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
##  [11] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
##  [21] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
##  [31] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
##  [41] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
##  [51] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
##  [61] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
##  [71] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
##  [81] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
##  [91] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [101] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [111] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [121] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [131] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [141] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [151] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [161] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [171] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [181] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [191] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [201] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [211] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [221] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [231] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [241] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [251] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [261] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [271] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [281] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Nhận" "Nhận"
## [291] "Nhận" "Nhận" "Nhận" "Nhận" "Nhận" "Nhận" "Nhận" "Loại" "Loại" "Loại"
## [301] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [311] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [321] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [331] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [341] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
## [351] "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại" "Loại"
  1. Sử dụng lệnh tcd1$TF.Coded <- case_when() để mã hóa
# Kết quả thu được sau khi dùng lệnh là: những người có độ tuổi từ 10-14 tuổi nếu có dân số nhỏ hơn 100000 thì hiển thị 'Không đông', từ 100000-200000 dân số thì hiển thị 'Đông', từ hơn 200000 dân số thì hiển thị "Quá đông'
t4 <- tcd1$TF.Coded <- case_when(tcd1$TF < 100000 ~ 'Không đông', tcd1$TF >= 100000 & tcd1$TF <= 200000 ~ 'Đông', tcd1$TF > 200000 ~ 'Quá đông')
t4
##   [1] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##   [6] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [11] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [16] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [21] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [26] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [31] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [36] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [41] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [46] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [51] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [56] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [61] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [66] "Không đông" "Không đông" "Không đông" "Không đông" "Không đông"
##  [71] "Không đông" "Không đông" "Quá đông"   "Quá đông"   "Quá đông"  
##  [76] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
##  [81] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
##  [86] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
##  [91] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
##  [96] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [101] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [106] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [111] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [116] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [121] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [126] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [131] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [136] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [141] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [146] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [151] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [156] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [161] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [166] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [171] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [176] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [181] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [186] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [191] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [196] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [201] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [206] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [211] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [216] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [221] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [226] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [231] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [236] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [241] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [246] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [251] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [256] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [261] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [266] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [271] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [276] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [281] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [286] "Quá đông"   "Quá đông"   "Quá đông"   "Đông"       "Đông"      
## [291] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [296] "Đông"       "Đông"       "Đông"       "Đông"       "Đông"      
## [301] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [306] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [311] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [316] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [321] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [326] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [331] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [336] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [341] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [346] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [351] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"  
## [356] "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"   "Quá đông"
  1. Sử dụng lệnh tcd1$P.Coded2 <- cut() để mã hóa
# Dùng lệnh tcd1$P.Coded2 <- cut(tcd1$P,3,labels = c('Loại 1','Loại 2','Loại 3')) để chia nhóm ra thành 3 loại tương ứng như sau: 'Loại 1'-'Không đông', 'Loại 2'-'Đông', 'Loại 3'-'Quá đông'
t5 <- tcd1$P.Coded2 <- cut(tcd1$P,3,labels = c('Loại 1','Loại 2','Loại 3'))
t5 
##   [1] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
##  [11] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
##  [21] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
##  [31] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
##  [41] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
##  [51] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
##  [61] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
##  [71] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
##  [81] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
##  [91] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [101] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [111] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [121] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [131] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [141] Loại 1 Loại 1 Loại 1 Loại 1 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2
## [151] Loại 2 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2
## [161] Loại 2 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2 Loại 2
## [171] Loại 2 Loại 2 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3
## [181] Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3
## [191] Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3
## [201] Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3
## [211] Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3 Loại 1 Loại 1 Loại 1 Loại 1
## [221] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [231] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [241] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [251] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [261] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [271] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [281] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [291] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [301] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [311] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [321] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [331] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [341] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## [351] Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1 Loại 1
## Levels: Loại 1 Loại 2 Loại 3

Lập bảng tần số

# Câu lệnh phân tích trong bộ dữ liệu có 5 quốc gia xuất hiện 72 lần 
table(tcd1$Name)
## 
##   Andorra    Brazil     China Indonesia Singapore 
##        72        72        72        72        72
# Câu lệnh thể hiện có bao nhiêu quốc gia thuộc 'Đông','Không đông','Quá đông' 
table(tcd1$TF.Coded)
## 
##       Đông Không đông   Quá đông 
##         12         72        276
# Câu lệnh thể hiện có bao nhiêu quốc gia thuộc loại 1,2,3 
table(tcd1$P.Coded2)
## 
## Loại 1 Loại 2 Loại 3 
##    288     28     44

Phân tích dữ liệu theo quốc gia và theo thời gian

1.Tính các đặc trưng đo lường theo độ tuổi từ 20-29 tuổi của 5 quốc gia

1.1 Sử dụng lệnh summary() để tính toán

# Lệnh summary () cho biết các thông số min, 1st Qu., median, mean, 3rd Qu., max và kết quả thu được là: ở độ tuổi từ 20-29 thì dân số thấp nhất là 724, cao nhất là 255108640, trung vị là 16466224, tứ phân vị thứ nhất là 293256, tứ phân vị thứ 3 là 41557046   
b <- summary(tcd1$TWN)
b
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
##       724    293256  16466224  45292176  41557046 255108640

1.2 Sử dụng lệnh sum() để tính toán

# Lệnh sum () dùng để tính tổng dân số của tập dữ liệu đã chọn ra và kết quả thu được sau khi dùng lệnh là 16305183326  
o <- sum(tcd1$TWN)
o 
## [1] 16305183326

1.3 Sử dụng lệnh mean() để tính toán

# Lệnh mean () dùng để tính giá trị trung bình của tập dữ liệu đã chọn và kết quả thu được sau khi dùng lệnh là 45292176 
b0 <- mean(tcd1$TWN,na.rm = T)
b0 
## [1] 45292176

1.4 Sử dụng lệnh length() để tính toán

# Lệnh length() dùng để tính số quan sát có trong tập dữ liệu đã chọn ra và kết quả thu được là 360 phần tử 
b1 <- length(tcd1$TWN)
b1 
## [1] 360

1.5 Sử dụng lệnh var() để tính toán

# Lệnh var() dùng để tính phương sai của các giá trị trong tập dữ liệu đã chọn và kết quả thu được là 4.89235e+15 
b2 <- var(tcd1$TWN)
b2 
## [1] 4.89235e+15

1.6 Sử dụng lệnh sd() để tính toán

# Lệnh sd() dùng để tính độ lệch chuẩn của các giá trị trong tập dữ liệu đã chọn và kết quả thu được là 69945336 
b3 <- sd(tcd1$TWN)
b3 
## [1] 69945336

1.7 Sử dụng lệnh median() để tính toán

# Lệnh median dùng để tính giá trị trung vị của tập dữ liệu đã chọn và kết quả thu được là 16466225 
b4 <- median(tcd1$TWN)
b4
## [1] 16466225

1.8 Sử dụng lệnh quantile() để tính toán

# Lệnh quantile() dùng để tính toán phân vị của tập dữ liệu đã chọn. Phân vị là giá trị chia theo phần trăm cụ thể và kết quả thu được là 25%-293255.8, 50%-16466224.5, 75%-41557046.0 
b5 <- quantile(tcd1$TWN, probs = c(.25,.5,.75))
b5 
##        25%        50%        75% 
##   293255.8 16466224.5 41557046.0

Nhiệm vụ 3.2

Tóm tắt

Nhiệm vụ 3.1 tiến hành thực hiện các thao tác đã học trên bộ dữ liệu trong file “top 100 world university 2024.csv”. Datasets QS Xếp hạng là danh mục xếp hạng đại học có uy tín nhất thế giới. Bảng xếp hạng QS công bố bảng xếp hạng các trường đại học thế giới QS mỗi năm và bộ dữ liệu này chứa 100 trường đại học hàng đầu thế giới năm 2024 theo phiên bản QS Xếp hạng 2024.

Mô tả về datasets

  • Datasets bao gồm 105 quan sát và 13 biến
  • rank : Xếp hạng của acc đại học. xếp hạng QS.
  • university : Tên của trường đại học.
  • overall score : Điểm tổng thể được tính từ các tính năng khác.
  • academic reputation : Danh tiếng học thuật của trường đại học.
  • employer reputation : Danh tiếng nhà tuyển dụng của trường đại học.
  • faculty student ratio : Tỷ lệ sinh viên của khoa được tính bằng cách chia số lượng Khoa cho số lượng Sinh viên được QS xác nhận.
  • citations per faculty : Đối với số trích dẫn của mỗi giảng viên, QS lấy tổng số lượng trích dẫn nhận được từ tất cả các bài báo do một cơ sở sản xuất trong 5 năm chia theo số lượng giảng viên của cơ sở đó.
  • international faculty ratio : Số lượng giảng viên đóng góp vào việc giảng dạy hoặc nghiên cứu học thuật hoặc cả hai tại một trường đại học trong thời gian tối thiểu ít nhất ba tháng và là người có quốc tịch nước ngoài trong tổng số giảng viên.
  • international students ratio : Tổng số sinh viên đại học và sau đại học là người nước ngoài và dành ít nhất ba tháng tại trường đại học của bạn so với tổng số sinh viên đại học và sinh viên sau đại học nói chung.
  • international research network : Chỉ số IRN = L / ln(P), trong đó In(P) là logarit tự nhiên của số lượng đối tác quốc tế riêng biệt (các tổ chức giáo dục đại học) và L là số lượng riêng biệt của các quốc gia/lãnh thổ quốc tế được đại diện bởi họ.
  • employement outcomes : Kết quả Việc làm = Chỉ số Tác động của Cựu sinh viên được điều chỉnh * ln(Chỉ số Việc làm Sau đại học).
  • sustainability : Chỉ số giáo dục bền vững xem xét kết quả của cựu sinh viên và danh tiếng học thuật trong các khóa học về khoa học trái đất, biển và môi trường, cũng như tính sẵn có của các khóa học đưa khoa học khí hậu và/hoặc tính bền vững vào chương trình giảng dạy.

Cài đặt và load gói dataset vào object

# Để load gói dataset từ file csv vào Rmd ta dùng lệnh: tcd <- read.csv(file.choose(), header = T)
sc <- read.csv("C:/Users/ADMIN/Downloads/sc.csv", header = T)
datatable(sc)

Kiểm tra biến và quan sát của bộ đatasets đã chọn

dim(sc)
## [1] 105  13

Đổi tên cho các biến của dataset đã chọn

# Ta sủ dụng lệnh names() để thay đổi tên biến của dataset để dễ dàng thao tác 
names(sc) <- c('X','r','u','os','ar','er','fsr','cpf','ifr','isr','irn','eo','s')
datatable(sc)

Rút trích dữ liệu cần thiết theo yêu cầu

Chọn ít nhất 5 trường đại học để phân tích

# Sử dụng lệnh %>%filter để gọi ra tên 10 trường đại học trong tổng dataset lần lượt ('University of Southampton','Yonsei University','Osaka University','University of Technology Sydney','ETH Zurich','Uppsala University','University of St Andrews','Brown University','Lund University','Fudan University'), lệnh select() dùng để chọn và trích xuất các biến lần lượt ('r','u','os','ar','er','fsr','cpf','ifr','isr','irn','eo','s')
library(tidyverse)
sc01 <- sc%>%filter(u =='University of Southampton'| u =='Yonsei University'| u =='Osaka University'| u =='University of Technology Sydney'| u =='ETH Zurich'| u == 'Uppsala University'| u == 'University of St Andrews'| u == 'Brown University'| u == 'Lund University'|  u == 'Fudan University' )%>%
select(r,u,os,ar,er,fsr,cpf,ifr,isr,irn,eo,s)
datatable(sc01)

Mã hóa dữ liệu

  1. Sử dụng lệnh sc01$u.Coded <- ifelse() để mã hóa
# Mã hóa dữ liệu từ dataset sao cho dữ liệu thu được chỉ hiện thị quan sát 'u' và trường đại học hiển thị là 'Osaka University', các trường đại học còn lại hiển thị là 'Not Osaka University'
a0 <- sc01$u.Coded <- ifelse (sc01$u == 'Osaka University','Osaka University','Not Osaka University')
a0
##  [1] "Not Osaka University" "Not Osaka University" "Not Osaka University"
##  [4] "Not Osaka University" "Osaka University"     "Not Osaka University"
##  [7] "Not Osaka University" "Not Osaka University" "Not Osaka University"
## [10] "Not Osaka University"
  1. Sử dụng lệnh sc01$u.Coded1 <- recode() để mã hóa
# Kết quả thu được sau khi mã hóa là dữ liệu hiển thị quan sát 'u' và tên các trường đại học tương ứng là ETH Zurich-KV1, Osaka University-KV2, các trường đại học còn lại hiển thị tên bình thường 
a1 <- sc01$u.Coded1 <- recode(sc01$u,'ETH Zurich' = 'KV1', 'Osaka University' = 'KV2')
a1
##  [1] "KV1"                             "Fudan University"               
##  [3] "Brown University"                "Yonsei University"              
##  [5] "KV2"                             "University of Southampton"      
##  [7] "Lund University"                 "University of Technology Sydney"
##  [9] "University of St Andrews"        "Uppsala University"
  1. Sử dụng lệnh sc01$er.Coded <- ifelse() để mã hóa
# Dùng lệnh để cho ra kết quả thu được là: danh tiếng các nhà tuyển dụng trên 60 thì sẽ hiển thị 'chọn' còn dưới 60 thì hiển thị 'không chọn'
a2 <- sc01$er <- ifelse(sc01$er >= 60, 'chọn', 'Không chọn')
a2
##  [1] "chọn"       "chọn"       "Không chọn" "chọn"       "chọn"      
##  [6] "Không chọn" "Không chọn" "Không chọn" "chọn"       "Không chọn"
  1. Sử dụng lệnh sc01$ar.Coded1 <- ifelse() để mã hóa
# Kết quả thu được sau khi dùng lệnh là: danh tiếng học thuật của trường đại học từ 50-100 sẽ hiển thị 'nhận' còn ngoài khoảng chọn thì hiển thị 'loại' 
a3 <- sc01$ar <- ifelse(sc01$ar >= 50 & sc01$ar <= 100, 'Nhận', 'Loại')
a3
##  [1] "Nhận" "Nhận" "Nhận" "Nhận" "Nhận" "Nhận" "Nhận" "Loại" "Loại" "Nhận"
  1. Sử dụng lệnh sc01$isr.Coded <- case_when() để mã hóa
# Kết quả thu được sau khi dùng lệnh là: tổng số sinh viên đại học và sau đại học là người nước ngoài và dành ít nhất ba tháng tại trường đại học của bạn so với tổng số sinh viên đại học và sinh viên sau đại học nói chung, nếu có giá trị <40 'loại', từ 40-70 'xem xét', từ >70 'nhận'  
a4 <- sc01$isr.Coded <- case_when(sc01$isr < 40 ~ 'Loại', sc01$isr >= 40 & sc01$isr <= 70 ~ 'Xem xét', sc01$isr > 70 ~ 'Nhận')
a4
##  [1] "Nhận"    "Loại"    "Xem xét" "Xem xét" "Loại"    "Nhận"    "Nhận"   
##  [8] "Nhận"    "Nhận"    "Nhận"
  1. Sử dụng lệnh sc01$isr.Coded2 <- cut() để mã hóa
# Dùng lệnh sc01$isr.Coded2 <- cut(sc01$isr,3,labels = c('Loại 1','Loại 2','Loại 3')) để chia nhóm ra thành 3 loại tương ứng như sau: 'Loại 1'-'Loại', 'Loại 2'-'Xem xét', 'Loại 3'-'Nhận'
a5 <- sc01$isr.Coded2 <- cut(sc01$isr,3,labels = c('Loại 1','Loại 2','Loại 3'))
a5 
##  [1] Loại 3 Loại 1 Loại 2 Loại 2 Loại 1 Loại 3 Loại 3 Loại 3 Loại 3 Loại 3
## Levels: Loại 1 Loại 2 Loại 3

Lập bảng tần số

table(sc01$fsr)
## 
##    9 47.7 50.2 52.8 55.3 64.9 72.1 77.8 84.5 87.4 
##    1    1    1    1    1    1    1    1    1    1

Phân tích dữ liệu

  1. Tính toán các đặc trưng đo lường 1.1 Sử dụng lệnh summary() để tính toán
# Lệnh summary () cho biết các thông số min, 1st Qu., median, mean, 3rd Qu., max và kết quả thu được tương ứng sau đây 
z <- summary(sc01$ifr)
z
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   19.60   85.45   96.35   80.95   98.60  100.00

1.2 Sử dụng lệnh sum() để tính toán

# Lệnh sum () dùng để tính tổng dân số của tập dữ liệu đã chọn ra và kết quả thu được sau khi dùng lệnh là 809.5
z1 <- sum(sc01$ifr)
z1
## [1] 809.5

1.3 Sử dụng lệnh mean() để tính toán

# Lệnh mean () dùng để tính giá trị trung bình của tập dữ liệu đã chọn và kết quả thu được sau khi dùng lệnh là 80.95

z2 <- mean(sc01$ifr)
z2
## [1] 80.95

1.4 Sử dụng lệnh length() để tính toán

# Lệnh length() cho biết quan sát của datasets đã chọn ra là 10 quan sát  
z3 <- length(sc01$ifr)
z3
## [1] 10

1.5 Sử dụng lệnh sd() để tính toán

# Lệnh sd() dùng để tính độ lệch chuẩn của các giá trị trong tập dữ liệu đã chọn và kết quả thu được là  30.44672
z5 <- sd(sc01$ifr)
z5
## [1] 30.44672

1.6 Sử dụng lệnh median() để tính toán

# Lệnh median dùng để tính giá trị trung vị của tập dữ liệu đã chọn và kết quả thu được là 96.35
z6 <- median(sc01$ifr)
z6
## [1] 96.35

1.7 Sử dụng lệnh quantile() để tính toán

# Lệnh quantile() dùng để tính toán phân vị của tập dữ liệu đã chọn. Phân vị là giá trị chia theo phần trăm cụ thể và kết quả thu được là 25%-85.45, 50%-96.35, 75%-98.60 
z7 <- quantile(sc01$ifr, probs = c(.25,.5,.75))
z7
##   25%   50%   75% 
## 85.45 96.35 98.60
  1. Tính toán các đặc trưng đo lường theo nhóm 2.1 Dùng lệnh sc01 %>% group_by(u) %>% summarise(mean_of_ifr = mean(ifr))
# Lệnh dùng để nhóm dữ liệu các trường đại học có trung bình giảng viên tham gia nghiên cứu khoa học 
moc <- sc01 %>% group_by(u) %>% summarise(mean_of_ifr = mean(ifr))
moc
## # A tibble: 10 × 2
##    u                               mean_of_ifr
##    <chr>                                 <dbl>
##  1 Brown University                       84.5
##  2 ETH Zurich                            100  
##  3 Fudan University                       88.3
##  4 Lund University                        98.8
##  5 Osaka University                       28.6
##  6 University of Southampton              96.1
##  7 University of St Andrews               98.7
##  8 University of Technology Sydney        96.6
##  9 Uppsala University                     98.3
## 10 Yonsei University                      19.6

2.2 Dùng lệnh sc01 %>% group_by(u) %>% summarise(n = n(),mean_of_ifr = mean(ifr))

# Lệnh dùng để tính đếm số quan sát để nhóm các trường đại học có tổng số sinh viên đại học và sau đại học là người nước ngoài và dành ít nhất ba tháng tại trường đại học của bạn so với tổng số sinh viên đại học và sinh viên sau đại học nói chung. 
moc0 <- sc01 %>% group_by(u) %>% summarise(n = n(),mean_of_isr = mean(isr))
moc0
## # A tibble: 10 × 3
##    u                                   n mean_of_isr
##    <chr>                           <int>       <dbl>
##  1 Brown University                    1        52  
##  2 ETH Zurich                          1        98.5
##  3 Fudan University                    1        33  
##  4 Lund University                     1        77.4
##  5 Osaka University                    1        13.2
##  6 University of Southampton           1        97.4
##  7 University of St Andrews            1       100  
##  8 University of Technology Sydney     1        93.6
##  9 Uppsala University                  1        82.4
## 10 Yonsei University                   1        49.7
LS0tDQp0aXRsZTogIk52MyINCmF1dGhvcjogInRjZGF0Ig0KZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJUg6JU06JVMsICVkIC0gJW0gLSAlWScpYCINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICB0aGVtZTogImRlZmF1bHQiDQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogIA0KLS0tDQoNCmBgYHtyIHNldHVwLGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KERUKQ0KbGlicmFyeShmbGV4dGFibGUpDQpgYGANCg0KIyAqKk5oaeG7h20gduG7pSAzLjEqKg0KIyMjIFTDs20gdOG6r3QgDQpOaGnhu4dtIHbhu6UgMy4xIHRp4bq/biBow6BuaCB0aOG7sWMgaGnhu4duIGPDoWMgdGhhbyB0w6FjIMSRw6MgaOG7jWMgdHLDqm4gYuG7mSBk4buvIGxp4buHdSB0cm9uZyBmaWxlICJwb3B1bGF0aW9uLWFuZC1kZW1vZ3JhcGh5LmNzdiIuIMSQw6J5IGzDoCBt4buZdCBkYXRhc2V0IHRow7RuZyBrw6ogaMahbiAxMDAgIHF14buRYyBnaWEgdHLDqm4gdGjhur8gZ2nhu5tpIHbhu4EgZMOibiBz4buRIGPDsyB0deG7lWkgdOG7qyBkxrDhu5tpIDEgxJHhur9uIGjGoW4gMTAwIHR14buVaSAoYuG7mSBk4buvIGxp4buHdSBs4bqleSBt4buRYyB04burIG7Eg20gMTk1MC0yMDIyMSkNCg0KIyMjIE3DtCB04bqjIHbhu4EgZGF0YXNldCANCi0gRGF0YXNldCBiYW8gZ+G7k20gMTgyODggcXVhbiBzw6F0IHbDoCAyNCBiaeG6v24gKDEgYmnhur9uIMSR4buLbmggdMOtbmggdsOgIDIzIGJp4bq/biDEkeG7i25oIGzGsOG7o25nKQ0KLSBDb3VudHJ5IG5hbWU6IFTDqm4gcXXhu5FjIGdpYQ0KLSBZZWFyOiBuxINtDQotIFBvcHVsYXRpb246IGTDom4gc+G7kQ0KLSBQb3B1bGF0aW9uIG9mIGNoaWxkcmVuIHVuZGVyIHRoZSBhZ2Ugb2YgMTogZMOibiBz4buRIHRy4bq7IGVtIGTGsOG7m2kgMSB0deG7lWkNCi0gUG9wdWxhdGlvbiBvZiBjaGlsZHJlbiB1bmRlciB0aGUgYWdlIG9mIDU6IGTDom4gc+G7kSB0cuG6uyBlbSBkxrDhu5tpIDUgdHXhu5VpDQotIFBvcHVsYXRpb24gb2YgY2hpbGRyZW4gdW5kZXIgdGhlIGFnZSBvZiAxNTogZMOibiBz4buRIHRy4bq7IGVtIGTGsOG7m2kgMTUgdHXhu5VpDQotIFBvcHVsYXRpb24gdW5kZXIgdGhlIGFnZSBvZiAyNTogZMOibiBz4buRIGTGsOG7m2kgMjUgdHXhu5VpDQotIFBvcHVsYXRpb24gYWdlZCAxNSB0byA2NCB5ZWFyczogc+G7kSBkw6JuIHThu6sgMTUgxJHhur9uIDY0IHR14buVaQ0KLSBQb3B1bGF0aW9uIG9sZGVyIHRoYW4gMTUgeWVhcnM6IGTDom4gc+G7kSB0csOqbiAxNSB0deG7lWkNCi0gUG9wdWxhdGlvbiBvbGRlciB0aGFuIDE4IHllYXJzOiBkw6JuIHPhu5EgdHLDqm4gMTggdHXhu5VpDQotIFBvcHVsYXRpb24gYXQgYWdlIDE6IGTDom4gc+G7kSAxIHR14buVaQ0KLSBQb3B1bGF0aW9uIGFnZWQgMSB0byA0IHllYXJzOiBkw6JuIHPhu5EgMSDEkeG6v24gNCB0deG7lWkNCi0gUG9wdWxhdGlvbiBhZ2VkIDUgdG8gOSB5ZWFyczogZMOibiBz4buRIDUgxJHhur9uIDkgdHXhu5VpDQotIFBvcHVsYXRpb24gYWdlZCAxMCB0byAxNCB5ZWFyczogZMOibiBz4buRIDEwIMSR4bq/biAxNCB0deG7lWkNCi0gUG9wdWxhdGlvbiBhZ2VkIDE1IHRvIDE5IHllYXJzOiBkw6JuIHPhu5EgMTUgxJHhur9uIDE5IHR14buVaQ0KLSBQb3B1bGF0aW9uIGFnZWQgMjAgdG8gMjkgeWVhcnM6IGTDom4gc+G7kSAyMCDEkeG6v24gMjkgdHXhu5VpDQotIFBvcHVsYXRpb24gYWdlZCAzMCB0byAzOSB5ZWFyczogZMOibiBz4buRIDMwIMSR4bq/biAzOSB0deG7lWkNCi0gUG9wdWxhdGlvbiBhZ2VkIDQwIHRvIDQ5IHllYXJzOiBkw6JuIHPhu5EgNDAgxJHhur9uIDQ5IHR14buVaQ0KLSBQb3B1bGF0aW9uIGFnZWQgNTAgdG8gNTkgeWVhcnM6IGTDom4gc+G7kSA1MCDEkeG6v24gNTkgdHXhu5VpDQotIFBvcHVsYXRpb24gYWdlZCA2MCB0byA2OSB5ZWFyczogZMOibiBz4buRIDYwIMSR4bq/biA2OSB0deG7lWkNCi0gUG9wdWxhdGlvbiBhZ2VkIDcwIHRvIDc5IHllYXJzOiBkw6JuIHPhu5EgNzAgxJHhur9uIDc5IHR14buVaQ0KLSBQb3B1bGF0aW9uIGFnZWQgODAgdG8gODkgeWVhcnM6IGTDom4gc+G7kSA4MCDEkeG6v24gODkgdHXhu5VpDQotIFBvcHVsYXRpb24gYWdlZCA5MCB0byA5OSB5ZWFyczogZMOibiBz4buRIDkwIMSR4bq/biA5OSB0deG7lWkNCi0gUG9wdWxhdGlvbiBvbGRlciB0aGFuIDEwMCB5ZWFyczogZMOibiBz4buRIGjGoW4gMTAwIHR14buVaQ0KDQojIyMgQ8OgaSDEkeG6t3QgdsOgIGxvYWQgZ8OzaSBkYXRhc2V0IHbDoG8gb2JqZWN0IA0KYGBge3J9DQojIMSQ4buDIGxvYWQgZ8OzaSBkYXRhc2V0IHThu6sgZmlsZSBjc3YgdsOgbyBSbWQgdGEgZMO5bmcgbOG7h25oOiB0Y2QgPC0gcmVhZC5jc3YoZmlsZS5jaG9vc2UoKSwgaGVhZGVyID0gVCkNCnRjZCA8LSByZWFkLmNzdigiQzovVXNlcnMvQURNSU4vRG93bmxvYWRzL3BvcHVsYXRpb24tYW5kLWRlbW9ncmFwaHkuY3N2IiwgaGVhZGVyID0gVCkNCmRhdGF0YWJsZSh0Y2QpDQoNCmBgYA0KYGBge3J9DQojIETDuW5nIGzhu4duaCBkaW0oKSDEkeG7gyBraeG7g20gdHJhIGLhu5kgZGF0YXNldHMgxJHDoyBjaOG7jW4gY8OzIGJhbyBuaGnDqnUgcXVhbiBzw6F0IHZhDQpkaW0odGNkKQ0KYGBgDQoNCg0KIyMjIMSQ4buVaSB0w6puIGNobyBjw6FjIGJp4bq/biBj4bunYSBkYXRhc2V0IMSRw6MgY2jhu41uIA0KYGBge3J9DQojIFRhIHPhu6cgZOG7pW5nIGzhu4duaCBuYW1lcygpIMSR4buDIHRoYXkgxJHhu5VpIHTDqm4gYmnhur9uIGPhu6dhIGRhdGFzZXQgxJHhu4MgZOG7hSBkw6BuZyB0aGFvIHTDoWMgDQoNCm5hbWVzKHRjZCkgPC0gYygnTmFtZScsJ1knLCdQJywnQ1UxJywnQ1U1JywnQ1UxNScsJ1UyNScsJzE1VDY0JywnTzE1JywnTzE4JywnUDEnLCcxVDQnLCc1VDknLCcxMFQxNCcsJzE1VDE5JywnMjBUMjknLCczMFQzOScsJzQwVDQ5JywnNTBUNTknLCc2MFQ2OScsJzcwVDc5JywnODBUODknLCc5MFQ5OScsJ08xMDAnKQ0KZGF0YXRhYmxlKHRjZCkNCmBgYA0KIyMjIFLDunQgdHLDrWNoIGThu68gbGnhu4d1IGPhuqduIHRoaeG6v3QgdGhlbyB5w6p1IGPhuqd1IA0KQ2jhu41uIMOtdCBuaOG6pXQgNSBxdeG7kWMgZ2lhLCA1IMSR4buZIHR14buVaSB2w6AgdOG7lW5nIGTDom4gc+G7kSDEkeG7gyBwaMOibiB0w61jaCANCmBgYHtyfQ0KIyBT4butIGThu6VuZyBs4buHbmggJT4lZmlsdGVyIMSR4buDIGfhu41pIHJhIHTDqm4gNSBxdeG7kWMgZ2lhIHRyb25nIHThu5VuZyBkYXRhc2V0IGzhuqduIGzGsOG7o3QgKCdDaGluYScsJ0JyYXppbCcsJ0FuZG9ycmEnLCdTaW5nYXBvcmUnLCdJbmRvbmVzaWEnKSwgbOG7h25oIHNlbGVjdCgpIMSR4buDIGNo4buNbiB2w6AgdHLDrWNoIHh14bqldCAgNSDEkeG7mSB0deG7lWkgKDEwLTE0IHR14buVaSwgMTUtMTkgdHXhu5VpLCAyMC0yOSB0deG7lWksIDMwLTM5IHR14buVaSwgNDAtNDkgdHXhu5VpICkgdsOgIHThu5VuZyBkw6JuIHPhu5EgY+G7p2EgbOG6p24gbMaw4bujdCA1IHF14buRYyBnaWEgxJHDoyBjaOG7jW4gICAgDQoNCnRjZDEgPC0gdGNkJT4lZmlsdGVyKE5hbWUgPT0gJ0NoaW5hJ3wgTmFtZSA9PSAnQnJhemlsJ3xOYW1lID09J0FuZG9ycmEnfE5hbWUgPT0nU2luZ2Fwb3JlJ3xOYW1lID09J0luZG9uZXNpYScpJT4lIHNlbGVjdChOYW1lLFAsJzEwVDE0JywnMTVUMTknLCcyMFQyOScsJzMwVDM5JywnNDBUNDknKQ0KZGF0YXRhYmxlKHRjZDEpDQpgYGANCiMjIyBNw6MgaMOzYSBk4buvIGxp4buHdSANCjEuIFPhu60gZOG7pW5nIGzhu4duaCB0Y2QxJE5hbWUuQ29kZWQgPC0gaWZlbHNlKCkgxJHhu4MgbcOjIGjDs2EgDQpgYGB7cn0NCiMgTcOjIGjDs2EgZOG7ryBsaeG7h3UgdOG7qyBkYXRhc2V0IHNhbyBjaG8gZOG7ryBsaeG7h3UgdGh1IMSRxrDhu6NjIGNo4buJIGhp4buHbiB0aOG7iyBxdWFuIHPDoXQgJ05hbWUnIHbDoCBxdeG7kWMgZ2lhIGhp4buDbiB0aOG7iyBsw6AgJ0NoaW5hJyAoIHThu6sgcWlhbiBzw6F0IDE0NS0yMTYgKSwgY8OhYyBxdeG7kWMgZ2lhIGPDsm4gbOG6oWkgaGnhu4NuIHRo4buLIGzDoCAnTm90IENoaW5hICcNCnQgPC0gdGNkMSROYW1lLkNvZGVkIDwtIGlmZWxzZSh0Y2QxJE5hbWUgPT0gJ0NoaW5hJywnQ2hpbmEnLCdOb3QgQ2hpbmEnKQ0KdA0KYGBgDQoyLiBT4butIGThu6VuZyBs4buHbmggdGNkMSROYW1lLkNvZGVkMSA8LSByZWNvZGUoKSDEkeG7gyBtw6MgaMOzYSANCmBgYHtyfQ0KIyBL4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2Mgc2F1IGtoaSBtw6MgaMOzYSBsw6AgZOG7ryBsaeG7h3UgaGnhu4NuIHRo4buLIHF1YW4gc8OhdCAnTmFtZScgdsOgIHTDqm4gcXXhu5FjIGdpYSB0xrDGoW5nIOG7qW5nIGzDoCBBbmRvcnJhLUtWMSwgQ2hpbmEtS1YyLCBjw6FjIHF14buRYyBnaWEgY8OybiBs4bqhaSBoaeG7g24gdGjhu4sgdMOqbiBiw6xuaCB0aMaw4budbmcgDQp0MSA8LSB0Y2QxJE5hbWUuQ29kZWQxIDwtIHJlY29kZSh0Y2QxJE5hbWUsQW5kb3JyYSA9ICdLVjEnLCBDaGluYSA9ICdLVjInKQ0KdDENCmBgYA0KYGBge3J9DQojIMSQ4buVaSB0w6puIGPDoWMgYmnhur9uIMSR4buDIGThu4UgdGhhbyB0w6FjDQpuYW1lcyh0Y2QxKSA8LSBjKCdOYW1lJywnUCcsJ1RGJywnVE4nLCdUV04nLCdUSE4nLCdGTicpDQpkYXRhdGFibGUodGNkMSkgDQpgYGANCg0KDQozLiBT4butIGThu6VuZyBs4buHbmggdGNkMSRURi5Db2RlZCA8LSBpZmVsc2UoKSDEkeG7gyBtw6MgaMOzYQ0KDQpgYGB7cn0NCiMgVGEgY+G6p24gxJHhu5VpIGzhuqFpIHTDqm4gYmnhur9uIMSR4buDIGThu4UgdGhhbyB0w6FjIHNhdSDEkcOzIGTDuW5nIGzhu4duaCDEkeG7gyBjaG8gcmEga+G6v3QgcXXhuqMgdGh1IMSRxrDhu6NjIGzDoDogZMOibiBz4buRIHThu6sgMTAtMTQgdHXhu5VpIGPDsyBoxqFuIDEwMDAwMCBkw6JuIHPhu5Egc+G6vSBoaeG7g24gdGjhu4sgbMOgICfEkMO0bmcnIGPDsm4gw610IGjGoW4gMTAwMDAwIGTDom4gc+G7kSBz4bq9IGhp4buDbiB0aOG7iyBsw6AgJ0tow7RuZyDEkcO0bmcnIA0KbmFtZXModGNkMSkgPC0gYygnTmFtZScsJ1AnLCdURicsJ1ROJywnVFdOJywnVEhOJywnRk4nKQ0KdDIgPC0gdGNkMSRURi5Db2RlZCA8LSBpZmVsc2UodGNkMSRURiA+PSAxMDAwMDAsICfEkMO0bmcnLCAnS2jDtG5nIMSRw7RuZycpDQp0Mg0KYGBgDQo0LiBT4butIGThu6VuZyBs4buHbmggdGNkMSRURi5Db2RlZDEgPC0gaWZlbHNlKCkgxJHhu4MgbcOjIGjDs2EgDQpgYGB7cn0NCiMgS+G6v3QgcXXhuqMgdGh1IMSRxrDhu6NjIHNhdSBraGkgZMO5bmcgbOG7h25oIGzDoDogbmjhu69uZyBuZ8aw4budaSBjw7MgxJHhu5kgdHXhu5VpIHThu6sgMTAtMTQgdHXhu5VpIG7hur91IGPDsyB04burIGjGoW4gMTAwMDAwIMSR4bq/biBkxrDhu5tpIDE1MDAwMCBkw6JuIHPhu5EgdGjDrCBz4bq9IGhp4buDbiB0aOG7iyAnTmjhuq1uJyBjw7JuIG5nb8OgaSBraG/huqNuZyB0csOqbiB0aMOsIGhp4buDbiB0aOG7iyAnTG/huqFpJyANCnQzIDwtIHRjZDEkVEYuQ29kZWQxIDwtIGlmZWxzZSh0Y2QxJFRGID49IDEwMDAwMCAmIHRjZDEkVEYgPD0gMTUwMDAwLCAnTmjhuq1uJywgJ0xv4bqhaScpDQp0Mw0KYGBgDQo1LiBT4butIGThu6VuZyBs4buHbmggdGNkMSRURi5Db2RlZCA8LSBjYXNlX3doZW4oKSDEkeG7gyBtw6MgaMOzYSANCmBgYHtyfQ0KIyBL4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2Mgc2F1IGtoaSBkw7luZyBs4buHbmggbMOgOiBuaOG7r25nIG5nxrDhu51pIGPDsyDEkeG7mSB0deG7lWkgdOG7qyAxMC0xNCB0deG7lWkgbuG6v3UgY8OzIGTDom4gc+G7kSBuaOG7jyBoxqFuIDEwMDAwMCB0aMOsIGhp4buDbiB0aOG7iyAnS2jDtG5nIMSRw7RuZycsIHThu6sgMTAwMDAwLTIwMDAwMCBkw6JuIHPhu5EgdGjDrCBoaeG7g24gdGjhu4sgJ8SQw7RuZycsIHThu6sgaMahbiAyMDAwMDAgZMOibiBz4buRIHRow6wgaGnhu4NuIHRo4buLICJRdcOhIMSRw7RuZycNCnQ0IDwtIHRjZDEkVEYuQ29kZWQgPC0gY2FzZV93aGVuKHRjZDEkVEYgPCAxMDAwMDAgfiAnS2jDtG5nIMSRw7RuZycsIHRjZDEkVEYgPj0gMTAwMDAwICYgdGNkMSRURiA8PSAyMDAwMDAgfiAnxJDDtG5nJywgdGNkMSRURiA+IDIwMDAwMCB+ICdRdcOhIMSRw7RuZycpDQp0NA0KYGBgDQo2LiBT4butIGThu6VuZyBs4buHbmggdGNkMSRQLkNvZGVkMiA8LSBjdXQoKSDEkeG7gyBtw6MgaMOzYSANCmBgYHtyfQ0KIyBEw7luZyBs4buHbmggdGNkMSRQLkNvZGVkMiA8LSBjdXQodGNkMSRQLDMsbGFiZWxzID0gYygnTG/huqFpIDEnLCdMb+G6oWkgMicsJ0xv4bqhaSAzJykpIMSR4buDIGNoaWEgbmjDs20gcmEgdGjDoG5oIDMgbG/huqFpIHTGsMahbmcg4bupbmcgbmjGsCBzYXU6ICdMb+G6oWkgMSctJ0tow7RuZyDEkcO0bmcnLCAnTG/huqFpIDInLSfEkMO0bmcnLCAnTG/huqFpIDMnLSdRdcOhIMSRw7RuZycNCnQ1IDwtIHRjZDEkUC5Db2RlZDIgPC0gY3V0KHRjZDEkUCwzLGxhYmVscyA9IGMoJ0xv4bqhaSAxJywnTG/huqFpIDInLCdMb+G6oWkgMycpKQ0KdDUgDQpgYGANCg0KDQojIyMgTOG6rXAgYuG6o25nIHThuqduIHPhu5EgDQpgYGB7cn0NCiMgQ8OidSBs4buHbmggcGjDom4gdMOtY2ggdHJvbmcgYuG7mSBk4buvIGxp4buHdSBjw7MgNSBxdeG7kWMgZ2lhIHh14bqldCBoaeG7h24gNzIgbOG6p24gDQp0YWJsZSh0Y2QxJE5hbWUpDQpgYGANCmBgYHtyfQ0KIyBDw6J1IGzhu4duaCB0aOG7gyBoaeG7h24gY8OzIGJhbyBuaGnDqnUgcXXhu5FjIGdpYSB0aHXhu5ljICfEkMO0bmcnLCdLaMO0bmcgxJHDtG5nJywnUXXDoSDEkcO0bmcnIA0KdGFibGUodGNkMSRURi5Db2RlZCkNCmBgYA0KYGBge3J9DQojIEPDonUgbOG7h25oIHRo4buDIGhp4buHbiBjw7MgYmFvIG5oacOqdSBxdeG7kWMgZ2lhIHRodeG7mWMgbG/huqFpIDEsMiwzIA0KdGFibGUodGNkMSRQLkNvZGVkMikNCmBgYA0KDQojIyMgUGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgdGhlbyBxdeG7kWMgZ2lhIHbDoCB0aGVvIHRo4budaSBnaWFuIA0KDQoNCjEuVMOtbmggY8OhYyDEkeG6t2MgdHLGsG5nIMSRbyBsxrDhu51uZyB0aGVvIMSR4buZIHR14buVaSB04burIDIwLTI5IHR14buVaSBj4bunYSA1IHF14buRYyBnaWEgDQoNCjEuMSBT4butIGThu6VuZyBs4buHbmggc3VtbWFyeSgpIMSR4buDIHTDrW5oIHRvw6FuIA0KDQpgYGB7cn0NCiMgTOG7h25oIHN1bW1hcnkgKCkgY2hvIGJp4bq/dCBjw6FjIHRow7RuZyBz4buRIG1pbiwgMXN0IFF1LiwgbWVkaWFuLCBtZWFuLCAzcmQgUXUuLCBtYXggdsOgIGvhur90IHF14bqjIHRodSDEkcaw4bujYyBsw6A6IOG7nyDEkeG7mSB0deG7lWkgdOG7qyAyMC0yOSB0aMOsIGTDom4gc+G7kSB0aOG6pXAgbmjhuqV0IGzDoCA3MjQsIGNhbyBuaOG6pXQgbMOgIDI1NTEwODY0MCwgdHJ1bmcgduG7iyBsw6AgMTY0NjYyMjQsIHThu6kgcGjDom4gduG7iyB0aOG7qSBuaOG6pXQgbMOgIDI5MzI1NiwgdOG7qSBwaMOibiB24buLIHRo4bupIDMgbMOgIDQxNTU3MDQ2ICAgDQpiIDwtIHN1bW1hcnkodGNkMSRUV04pDQpiDQpgYGANCjEuMiBT4butIGThu6VuZyBs4buHbmggc3VtKCkgxJHhu4MgdMOtbmggdG/DoW4gDQpgYGB7cn0NCiMgTOG7h25oIHN1bSAoKSBkw7luZyDEkeG7gyB0w61uaCB04buVbmcgZMOibiBz4buRIGPhu6dhIHThuq1wIGThu68gbGnhu4d1IMSRw6MgY2jhu41uIHJhIHbDoCBr4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2Mgc2F1IGtoaSBkw7luZyBs4buHbmggbMOgIDE2MzA1MTgzMzI2ICANCm8gPC0gc3VtKHRjZDEkVFdOKQ0KbyANCmBgYA0KMS4zIFPhu60gZOG7pW5nIGzhu4duaCBtZWFuKCkgxJHhu4MgdMOtbmggdG/DoW4gDQpgYGB7cn0NCiMgTOG7h25oIG1lYW4gKCkgZMO5bmcgxJHhu4MgdMOtbmggZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBj4bunYSB04bqtcCBk4buvIGxp4buHdSDEkcOjIGNo4buNbiB2w6Aga+G6v3QgcXXhuqMgdGh1IMSRxrDhu6NjIHNhdSBraGkgZMO5bmcgbOG7h25oIGzDoCA0NTI5MjE3NiANCmIwIDwtIG1lYW4odGNkMSRUV04sbmEucm0gPSBUKQ0KYjAgDQpgYGANCjEuNCBT4butIGThu6VuZyBs4buHbmggbGVuZ3RoKCkgxJHhu4MgdMOtbmggdG/DoW4NCmBgYHtyfQ0KIyBM4buHbmggbGVuZ3RoKCkgZMO5bmcgxJHhu4MgdMOtbmggc+G7kSBxdWFuIHPDoXQgY8OzIHRyb25nIHThuq1wIGThu68gbGnhu4d1IMSRw6MgY2jhu41uIHJhIHbDoCBr4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2MgbMOgIDM2MCBwaOG6p24gdOG7rSANCmIxIDwtIGxlbmd0aCh0Y2QxJFRXTikNCmIxIA0KYGBgDQoxLjUgU+G7rSBk4bulbmcgbOG7h25oIHZhcigpIMSR4buDIHTDrW5oIHRvw6FuIA0KYGBge3J9DQojIEzhu4duaCB2YXIoKSBkw7luZyDEkeG7gyB0w61uaCBwaMawxqFuZyBzYWkgY+G7p2EgY8OhYyBnacOhIHRy4buLIHRyb25nIHThuq1wIGThu68gbGnhu4d1IMSRw6MgY2jhu41uIHbDoCBr4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2MgbMOgIDQuODkyMzVlKzE1IA0KYjIgPC0gdmFyKHRjZDEkVFdOKQ0KYjIgDQpgYGANCjEuNiBT4butIGThu6VuZyBs4buHbmggc2QoKSDEkeG7gyB0w61uaCB0b8OhbiANCmBgYHtyfQ0KIyBM4buHbmggc2QoKSBkw7luZyDEkeG7gyB0w61uaCDEkeG7mSBs4buHY2ggY2h14bqpbiBj4bunYSBjw6FjIGdpw6EgdHLhu4sgdHJvbmcgdOG6rXAgZOG7ryBsaeG7h3UgxJHDoyBjaOG7jW4gdsOgIGvhur90IHF14bqjIHRodSDEkcaw4bujYyBsw6AgNjk5NDUzMzYgDQpiMyA8LSBzZCh0Y2QxJFRXTikNCmIzIA0KYGBgDQoxLjcgU+G7rSBk4bulbmcgbOG7h25oIG1lZGlhbigpIMSR4buDIHTDrW5oIHRvw6FuIA0KYGBge3J9DQojIEzhu4duaCBtZWRpYW4gZMO5bmcgxJHhu4MgdMOtbmggZ2nDoSB0cuG7iyB0cnVuZyB24buLIGPhu6dhIHThuq1wIGThu68gbGnhu4d1IMSRw6MgY2jhu41uIHbDoCBr4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2MgbMOgIDE2NDY2MjI1IA0KYjQgPC0gbWVkaWFuKHRjZDEkVFdOKQ0KYjQNCmBgYA0KMS44IFPhu60gZOG7pW5nIGzhu4duaCBxdWFudGlsZSgpIMSR4buDIHTDrW5oIHRvw6FuIA0KYGBge3J9DQojIEzhu4duaCBxdWFudGlsZSgpIGTDuW5nIMSR4buDIHTDrW5oIHRvw6FuIHBow6JuIHbhu4sgY+G7p2EgdOG6rXAgZOG7ryBsaeG7h3UgxJHDoyBjaOG7jW4uIFBow6JuIHbhu4sgbMOgIGdpw6EgdHLhu4sgY2hpYSB0aGVvIHBo4bqnbiB0csSDbSBj4bulIHRo4buDIHbDoCBr4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2MgbMOgIDI1JS0yOTMyNTUuOCwgNTAlLTE2NDY2MjI0LjUsIDc1JS00MTU1NzA0Ni4wIA0KYjUgPC0gcXVhbnRpbGUodGNkMSRUV04sIHByb2JzID0gYyguMjUsLjUsLjc1KSkNCmI1IA0KYGBgDQoNCg0KDQoNCg0KDQoNCiMgKipOaGnhu4dtIHbhu6UgMy4yKioNCiMjIFTDs20gdOG6r3QgDQpOaGnhu4dtIHbhu6UgMy4xIHRp4bq/biBow6BuaCB0aOG7sWMgaGnhu4duIGPDoWMgdGhhbyB0w6FjIMSRw6MgaOG7jWMgdHLDqm4gYuG7mSBk4buvIGxp4buHdSB0cm9uZyBmaWxlICJ0b3AgMTAwIHdvcmxkIHVuaXZlcnNpdHkgMjAyNC5jc3YiLiBEYXRhc2V0cyBRUyBY4bq/cCBo4bqhbmcgbMOgIGRhbmggbeG7pWMgeOG6v3AgaOG6oW5nIMSR4bqhaSBo4buNYyBjw7MgdXkgdMOtbiBuaOG6pXQgdGjhur8gZ2nhu5tpLiBC4bqjbmcgeOG6v3AgaOG6oW5nIFFTIGPDtG5nIGLhu5EgYuG6o25nIHjhur9wIGjhuqFuZyBjw6FjIHRyxrDhu51uZyDEkeG6oWkgaOG7jWMgdGjhur8gZ2nhu5tpIFFTIG3hu5dpIG7Eg20gdsOgIGLhu5kgZOG7ryBsaeG7h3UgbsOgeSBjaOG7qWEgMTAwIHRyxrDhu51uZyDEkeG6oWkgaOG7jWMgaMOgbmcgxJHhuqd1IHRo4bq/IGdp4bubaSBuxINtIDIwMjQgdGhlbyBwaGnDqm4gYuG6o24gUVMgWOG6v3AgaOG6oW5nIDIwMjQuDQoNCiMjIE3DtCB04bqjIHbhu4EgZGF0YXNldHMgDQoNCi0gRGF0YXNldHMgYmFvIGfhu5NtIDEwNSBxdWFuIHPDoXQgdsOgIDEzIGJp4bq/biANCi0gcmFuayA6IFjhur9wIGjhuqFuZyBj4bunYSBhY2MgxJHhuqFpIGjhu41jLiB44bq/cCBo4bqhbmcgUVMuCQ0KLSB1bml2ZXJzaXR5IDogVMOqbiBj4bunYSB0csaw4budbmcgxJHhuqFpIGjhu41jLg0KLSBvdmVyYWxsIHNjb3JlIDoJxJBp4buDbSB04buVbmcgdGjhu4MgxJHGsOG7o2MgdMOtbmggdOG7qyBjw6FjIHTDrW5oIG7Eg25nIGtow6FjLg0KLSBhY2FkZW1pYyByZXB1dGF0aW9uIDoJRGFuaCB0aeG6v25nIGjhu41jIHRodeG6rXQgY+G7p2EgdHLGsOG7nW5nIMSR4bqhaSBo4buNYy4NCi0gZW1wbG95ZXIgcmVwdXRhdGlvbgk6IERhbmggdGnhur9uZyBuaMOgIHR1eeG7g24gZOG7pW5nIGPhu6dhIHRyxrDhu51uZyDEkeG6oWkgaOG7jWMuDQotIGZhY3VsdHkgc3R1ZGVudCByYXRpbyA6IFThu7cgbOG7hyBzaW5oIHZpw6puIGPhu6dhIGtob2EgxJHGsOG7o2MgdMOtbmggYuG6sW5nIGPDoWNoIGNoaWEgc+G7kSBsxrDhu6NuZyBLaG9hIGNobyBz4buRIGzGsOG7o25nIFNpbmggdmnDqm4gxJHGsOG7o2MgUVMgeMOhYyBuaOG6rW4uDQotIGNpdGF0aW9ucyBwZXIgZmFjdWx0eQk6IMSQ4buRaSB24bubaSBz4buRIHRyw61jaCBk4bqrbiBj4bunYSBt4buXaSBnaeG6o25nIHZpw6puLCBRUyBs4bqleSB04buVbmcgc+G7kSBsxrDhu6NuZyB0csOtY2ggZOG6q24gbmjhuq1uIMSRxrDhu6NjIHThu6sgdOG6pXQgY+G6oyBjw6FjIGLDoGkgYsOhbyBkbyBt4buZdCBjxqEgc+G7nyBz4bqjbiB4deG6pXQgdHJvbmcgNSBuxINtIGNoaWEgdGhlbyBz4buRIGzGsOG7o25nIGdp4bqjbmcgdmnDqm4gY+G7p2EgY8ahIHPhu58gxJHDsy4NCi0gaW50ZXJuYXRpb25hbCBmYWN1bHR5IHJhdGlvIDoJU+G7kSBsxrDhu6NuZyBnaeG6o25nIHZpw6puIMSRw7NuZyBnw7NwIHbDoG8gdmnhu4djIGdp4bqjbmcgZOG6oXkgaG/hurdjIG5naGnDqm4gY+G7qXUgaOG7jWMgdGh14bqtdCBob+G6t2MgY+G6oyBoYWkgdOG6oWkgbeG7mXQgdHLGsOG7nW5nIMSR4bqhaSBo4buNYyB0cm9uZyB0aOG7nWkgZ2lhbiB04buRaSB0aGnhu4N1IMOtdCBuaOG6pXQgYmEgdGjDoW5nIHbDoCBsw6AgbmfGsOG7nWkgY8OzIHF14buRYyB04buLY2ggbsaw4bubYyBuZ2/DoGkgdHJvbmcgdOG7lW5nIHPhu5EgZ2nhuqNuZyB2acOqbi4NCi0gaW50ZXJuYXRpb25hbCBzdHVkZW50cyByYXRpbyA6IFThu5VuZyBz4buRIHNpbmggdmnDqm4gxJHhuqFpIGjhu41jIHbDoCBzYXUgxJHhuqFpIGjhu41jIGzDoCBuZ8aw4budaSBuxrDhu5tjIG5nb8OgaSB2w6AgZMOgbmggw610IG5o4bqldCBiYSB0aMOhbmcgdOG6oWkgdHLGsOG7nW5nIMSR4bqhaSBo4buNYyBj4bunYSBi4bqhbiBzbyB24bubaSB04buVbmcgc+G7kSBzaW5oIHZpw6puIMSR4bqhaSBo4buNYyB2w6Agc2luaCB2acOqbiBzYXUgxJHhuqFpIGjhu41jIG7Ds2kgY2h1bmcuDQotIGludGVybmF0aW9uYWwgcmVzZWFyY2ggbmV0d29yayA6IENo4buJIHPhu5EgSVJOID0gTCAvIGxuKFApLCB0cm9uZyDEkcOzIEluKFApIGzDoCBsb2dhcml0IHThu7Egbmhpw6puIGPhu6dhIHPhu5EgbMaw4bujbmcgxJHhu5FpIHTDoWMgcXXhu5FjIHThur8gcmnDqm5nIGJp4buHdCAoY8OhYyB04buVIGNo4bupYyBnacOhbyBk4bulYyDEkeG6oWkgaOG7jWMpIHbDoCBMIGzDoCBz4buRIGzGsOG7o25nIHJpw6puZyBiaeG7h3QgY+G7p2EgY8OhYyBxdeG7kWMgZ2lhL2zDo25oIHRo4buVIHF14buRYyB04bq/IMSRxrDhu6NjIMSR4bqhaSBkaeG7h24gYuG7n2kgaOG7jS4JDQotIGVtcGxveWVtZW50IG91dGNvbWVzIDogS+G6v3QgcXXhuqMgVmnhu4djIGzDoG0gPSBDaOG7iSBz4buRIFTDoWMgxJHhu5luZyBj4bunYSBD4buxdSBzaW5oIHZpw6puIMSRxrDhu6NjIMSRaeG7gXUgY2jhu4luaCAqIGxuKENo4buJIHPhu5EgVmnhu4djIGzDoG0gU2F1IMSR4bqhaSBo4buNYykuDQotIHN1c3RhaW5hYmlsaXR5IDogQ2jhu4kgc+G7kSBnacOhbyBk4bulYyBi4buBbiB24buvbmcgeGVtIHjDqXQga+G6v3QgcXXhuqMgY+G7p2EgY+G7sXUgc2luaCB2acOqbiB2w6AgZGFuaCB0aeG6v25nIGjhu41jIHRodeG6rXQgdHJvbmcgY8OhYyBraMOzYSBo4buNYyB24buBIGtob2EgaOG7jWMgdHLDoWkgxJHhuqV0LCBiaeG7g24gdsOgIG3DtGkgdHLGsOG7nW5nLCBjxaluZyBuaMawIHTDrW5oIHPhurVuIGPDsyBj4bunYSBjw6FjIGtow7NhIGjhu41jIMSRxrBhIGtob2EgaOG7jWMga2jDrSBo4bqtdSB2w6AvaG/hurdjIHTDrW5oIGLhu4FuIHbhu69uZyB2w6BvIGNoxrDGoW5nIHRyw6xuaCBnaeG6o25nIGThuqF5Lg0KDQoNCg0KDQoNCiMjIEPDoGkgxJHhurd0IHbDoCBsb2FkIGfDs2kgZGF0YXNldCB2w6BvIG9iamVjdCANCmBgYHtyfQ0KIyDEkOG7gyBsb2FkIGfDs2kgZGF0YXNldCB04burIGZpbGUgY3N2IHbDoG8gUm1kIHRhIGTDuW5nIGzhu4duaDogdGNkIDwtIHJlYWQuY3N2KGZpbGUuY2hvb3NlKCksIGhlYWRlciA9IFQpDQpzYyA8LSByZWFkLmNzdigiQzovVXNlcnMvQURNSU4vRG93bmxvYWRzL3NjLmNzdiIsIGhlYWRlciA9IFQpDQpkYXRhdGFibGUoc2MpDQpgYGANCiMjIEtp4buDbSB0cmEgYmnhur9uIHbDoCBxdWFuIHPDoXQgY+G7p2EgYuG7mSDEkWF0YXNldHMgxJHDoyBjaOG7jW4NCmBgYHtyfQ0KZGltKHNjKQ0KYGBgDQoNCiMjIMSQ4buVaSB0w6puIGNobyBjw6FjIGJp4bq/biBj4bunYSBkYXRhc2V0IMSRw6MgY2jhu41uIA0KDQpgYGB7cn0NCiMgVGEgc+G7pyBk4bulbmcgbOG7h25oIG5hbWVzKCkgxJHhu4MgdGhheSDEkeG7lWkgdMOqbiBiaeG6v24gY+G7p2EgZGF0YXNldCDEkeG7gyBk4buFIGTDoG5nIHRoYW8gdMOhYyANCm5hbWVzKHNjKSA8LSBjKCdYJywncicsJ3UnLCdvcycsJ2FyJywnZXInLCdmc3InLCdjcGYnLCdpZnInLCdpc3InLCdpcm4nLCdlbycsJ3MnKQ0KZGF0YXRhYmxlKHNjKQ0KYGBgDQojIyBSw7p0IHRyw61jaCBk4buvIGxp4buHdSBj4bqnbiB0aGnhur90IHRoZW8gecOqdSBj4bqndSANCkNo4buNbiDDrXQgbmjhuqV0IDUgdHLGsOG7nW5nIMSR4bqhaSBo4buNYyDEkeG7gyBwaMOibiB0w61jaCANCmBgYHtyfQ0KIyBT4butIGThu6VuZyBs4buHbmggJT4lZmlsdGVyIMSR4buDIGfhu41pIHJhIHTDqm4gMTAgdHLGsOG7nW5nIMSR4bqhaSBo4buNYyB0cm9uZyB04buVbmcgZGF0YXNldCBs4bqnbiBsxrDhu6N0ICgnVW5pdmVyc2l0eSBvZiBTb3V0aGFtcHRvbicsJ1lvbnNlaSBVbml2ZXJzaXR5JywnT3Nha2EgVW5pdmVyc2l0eScsJ1VuaXZlcnNpdHkgb2YgVGVjaG5vbG9neSBTeWRuZXknLCdFVEggWnVyaWNoJywnVXBwc2FsYSBVbml2ZXJzaXR5JywnVW5pdmVyc2l0eSBvZiBTdCBBbmRyZXdzJywnQnJvd24gVW5pdmVyc2l0eScsJ0x1bmQgVW5pdmVyc2l0eScsJ0Z1ZGFuIFVuaXZlcnNpdHknKSwgbOG7h25oIHNlbGVjdCgpIGTDuW5nIMSR4buDIGNo4buNbiB2w6AgdHLDrWNoIHh14bqldCBjw6FjIGJp4bq/biBs4bqnbiBsxrDhu6N0ICgncicsJ3UnLCdvcycsJ2FyJywnZXInLCdmc3InLCdjcGYnLCdpZnInLCdpc3InLCdpcm4nLCdlbycsJ3MnKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpzYzAxIDwtIHNjJT4lZmlsdGVyKHUgPT0nVW5pdmVyc2l0eSBvZiBTb3V0aGFtcHRvbid8IHUgPT0nWW9uc2VpIFVuaXZlcnNpdHknfCB1ID09J09zYWthIFVuaXZlcnNpdHknfCB1ID09J1VuaXZlcnNpdHkgb2YgVGVjaG5vbG9neSBTeWRuZXknfCB1ID09J0VUSCBadXJpY2gnfCB1ID09ICdVcHBzYWxhIFVuaXZlcnNpdHknfCB1ID09ICdVbml2ZXJzaXR5IG9mIFN0IEFuZHJld3MnfCB1ID09ICdCcm93biBVbml2ZXJzaXR5J3wgdSA9PSAnTHVuZCBVbml2ZXJzaXR5J3wgIHUgPT0gJ0Z1ZGFuIFVuaXZlcnNpdHknICklPiUNCnNlbGVjdChyLHUsb3MsYXIsZXIsZnNyLGNwZixpZnIsaXNyLGlybixlbyxzKQ0KZGF0YXRhYmxlKHNjMDEpDQoNCmBgYA0KIyMgTcOjIGjDs2EgZOG7ryBsaeG7h3UgDQoxLiBT4butIGThu6VuZyBs4buHbmggc2MwMSR1LkNvZGVkIDwtIGlmZWxzZSgpIMSR4buDIG3DoyBow7NhDQpgYGB7cn0NCiMgTcOjIGjDs2EgZOG7ryBsaeG7h3UgdOG7qyBkYXRhc2V0IHNhbyBjaG8gZOG7ryBsaeG7h3UgdGh1IMSRxrDhu6NjIGNo4buJIGhp4buHbiB0aOG7iyBxdWFuIHPDoXQgJ3UnIHbDoCB0csaw4budbmcgxJHhuqFpIGjhu41jIGhp4buDbiB0aOG7iyBsw6AgJ09zYWthIFVuaXZlcnNpdHknLCBjw6FjIHRyxrDhu51uZyDEkeG6oWkgaOG7jWMgY8OybiBs4bqhaSBoaeG7g24gdGjhu4sgbMOgICdOb3QgT3Nha2EgVW5pdmVyc2l0eScNCmEwIDwtIHNjMDEkdS5Db2RlZCA8LSBpZmVsc2UgKHNjMDEkdSA9PSAnT3Nha2EgVW5pdmVyc2l0eScsJ09zYWthIFVuaXZlcnNpdHknLCdOb3QgT3Nha2EgVW5pdmVyc2l0eScpDQphMA0KDQpgYGANCjIuIFPhu60gZOG7pW5nIGzhu4duaCBzYzAxJHUuQ29kZWQxIDwtIHJlY29kZSgpIMSR4buDIG3DoyBow7NhDQpgYGB7cn0NCiMgS+G6v3QgcXXhuqMgdGh1IMSRxrDhu6NjIHNhdSBraGkgbcOjIGjDs2EgbMOgIGThu68gbGnhu4d1IGhp4buDbiB0aOG7iyBxdWFuIHPDoXQgJ3UnIHbDoCB0w6puIGPDoWMgdHLGsOG7nW5nIMSR4bqhaSBo4buNYyB0xrDGoW5nIOG7qW5nIGzDoCBFVEggWnVyaWNoLUtWMSwgT3Nha2EgVW5pdmVyc2l0eS1LVjIsIGPDoWMgdHLGsOG7nW5nIMSR4bqhaSBo4buNYyBjw7JuIGzhuqFpIGhp4buDbiB0aOG7iyB0w6puIGLDrG5oIHRoxrDhu51uZyANCmExIDwtIHNjMDEkdS5Db2RlZDEgPC0gcmVjb2RlKHNjMDEkdSwnRVRIIFp1cmljaCcgPSAnS1YxJywgJ09zYWthIFVuaXZlcnNpdHknID0gJ0tWMicpDQphMQ0KDQpgYGANCjMuIFPhu60gZOG7pW5nIGzhu4duaCBzYzAxJGVyLkNvZGVkIDwtIGlmZWxzZSgpIMSR4buDIG3DoyBow7NhDQpgYGB7cn0NCiMgRMO5bmcgbOG7h25oIMSR4buDIGNobyByYSBr4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2MgbMOgOiBkYW5oIHRp4bq/bmcgY8OhYyBuaMOgIHR1eeG7g24gZOG7pW5nIHRyw6puIDYwIHRow6wgc+G6vSBoaeG7g24gdGjhu4sgJ2No4buNbicgY8OybiBkxrDhu5tpIDYwIHRow6wgaGnhu4NuIHRo4buLICdraMO0bmcgY2jhu41uJw0KYTIgPC0gc2MwMSRlciA8LSBpZmVsc2Uoc2MwMSRlciA+PSA2MCwgJ2No4buNbicsICdLaMO0bmcgY2jhu41uJykNCmEyDQpgYGANCjQuIFPhu60gZOG7pW5nIGzhu4duaCBzYzAxJGFyLkNvZGVkMSA8LSBpZmVsc2UoKSDEkeG7gyBtw6MgaMOzYSANCmBgYHtyfQ0KIyBL4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2Mgc2F1IGtoaSBkw7luZyBs4buHbmggbMOgOiBkYW5oIHRp4bq/bmcgaOG7jWMgdGh14bqtdCBj4bunYSB0csaw4budbmcgxJHhuqFpIGjhu41jIHThu6sgNTAtMTAwIHPhur0gaGnhu4NuIHRo4buLICduaOG6rW4nIGPDsm4gbmdvw6BpIGtob+G6o25nIGNo4buNbiB0aMOsIGhp4buDbiB0aOG7iyAnbG/huqFpJyANCmEzIDwtIHNjMDEkYXIgPC0gaWZlbHNlKHNjMDEkYXIgPj0gNTAgJiBzYzAxJGFyIDw9IDEwMCwgJ05o4bqtbicsICdMb+G6oWknKQ0KYTMNCg0KYGBgDQo1LiBT4butIGThu6VuZyBs4buHbmggc2MwMSRpc3IuQ29kZWQgPC0gY2FzZV93aGVuKCkgxJHhu4MgbcOjIGjDs2EgDQpgYGB7cn0NCiMgS+G6v3QgcXXhuqMgdGh1IMSRxrDhu6NjIHNhdSBraGkgZMO5bmcgbOG7h25oIGzDoDogdOG7lW5nIHPhu5Egc2luaCB2acOqbiDEkeG6oWkgaOG7jWMgdsOgIHNhdSDEkeG6oWkgaOG7jWMgbMOgIG5nxrDhu51pIG7GsOG7m2Mgbmdvw6BpIHbDoCBkw6BuaCDDrXQgbmjhuqV0IGJhIHRow6FuZyB04bqhaSB0csaw4budbmcgxJHhuqFpIGjhu41jIGPhu6dhIGLhuqFuIHNvIHbhu5tpIHThu5VuZyBz4buRIHNpbmggdmnDqm4gxJHhuqFpIGjhu41jIHbDoCBzaW5oIHZpw6puIHNhdSDEkeG6oWkgaOG7jWMgbsOzaSBjaHVuZywgbuG6v3UgY8OzIGdpw6EgdHLhu4sgPDQwICdsb+G6oWknLCB04burIDQwLTcwICd4ZW0geMOpdCcsIHThu6sgPjcwICduaOG6rW4nICANCmE0IDwtIHNjMDEkaXNyLkNvZGVkIDwtIGNhc2Vfd2hlbihzYzAxJGlzciA8IDQwIH4gJ0xv4bqhaScsIHNjMDEkaXNyID49IDQwICYgc2MwMSRpc3IgPD0gNzAgfiAnWGVtIHjDqXQnLCBzYzAxJGlzciA+IDcwIH4gJ05o4bqtbicpDQphNA0KYGBgDQo2LiBT4butIGThu6VuZyBs4buHbmggc2MwMSRpc3IuQ29kZWQyIDwtIGN1dCgpIMSR4buDIG3DoyBow7NhDQpgYGB7cn0NCiMgRMO5bmcgbOG7h25oIHNjMDEkaXNyLkNvZGVkMiA8LSBjdXQoc2MwMSRpc3IsMyxsYWJlbHMgPSBjKCdMb+G6oWkgMScsJ0xv4bqhaSAyJywnTG/huqFpIDMnKSkgxJHhu4MgY2hpYSBuaMOzbSByYSB0aMOgbmggMyBsb+G6oWkgdMawxqFuZyDhu6luZyBuaMawIHNhdTogJ0xv4bqhaSAxJy0nTG/huqFpJywgJ0xv4bqhaSAyJy0nWGVtIHjDqXQnLCAnTG/huqFpIDMnLSdOaOG6rW4nDQphNSA8LSBzYzAxJGlzci5Db2RlZDIgPC0gY3V0KHNjMDEkaXNyLDMsbGFiZWxzID0gYygnTG/huqFpIDEnLCdMb+G6oWkgMicsJ0xv4bqhaSAzJykpDQphNSANCmBgYA0KIyMgTOG6rXAgYuG6o25nIHThuqduIHPhu5ENCmBgYHtyfQ0KdGFibGUoc2MwMSRmc3IpDQpgYGANCiMjIFBow6JuIHTDrWNoIGThu68gbGnhu4d1IA0KMS4gVMOtbmggdG/DoW4gY8OhYyDEkeG6t2MgdHLGsG5nIMSRbyBsxrDhu51uZyANCjEuMSBT4butIGThu6VuZyBs4buHbmggc3VtbWFyeSgpIMSR4buDIHTDrW5oIHRvw6FuDQpgYGB7cn0NCiMgTOG7h25oIHN1bW1hcnkgKCkgY2hvIGJp4bq/dCBjw6FjIHRow7RuZyBz4buRIG1pbiwgMXN0IFF1LiwgbWVkaWFuLCBtZWFuLCAzcmQgUXUuLCBtYXggdsOgIGvhur90IHF14bqjIHRodSDEkcaw4bujYyB0xrDGoW5nIOG7qW5nIHNhdSDEkcOieSANCnogPC0gc3VtbWFyeShzYzAxJGlmcikNCnoNCmBgYA0KMS4yIFPhu60gZOG7pW5nIGzhu4duaCBzdW0oKSDEkeG7gyB0w61uaCB0b8OhbiANCmBgYHtyfQ0KIyBM4buHbmggc3VtICgpIGTDuW5nIMSR4buDIHTDrW5oIHThu5VuZyBkw6JuIHPhu5EgY+G7p2EgdOG6rXAgZOG7ryBsaeG7h3UgxJHDoyBjaOG7jW4gcmEgdsOgIGvhur90IHF14bqjIHRodSDEkcaw4bujYyBzYXUga2hpIGTDuW5nIGzhu4duaCBsw6AgODA5LjUNCnoxIDwtIHN1bShzYzAxJGlmcikNCnoxDQpgYGANCjEuMyBT4butIGThu6VuZyBs4buHbmggbWVhbigpIMSR4buDIHTDrW5oIHRvw6FuIA0KYGBge3J9DQojIEzhu4duaCBtZWFuICgpIGTDuW5nIMSR4buDIHTDrW5oIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggY+G7p2EgdOG6rXAgZOG7ryBsaeG7h3UgxJHDoyBjaOG7jW4gdsOgIGvhur90IHF14bqjIHRodSDEkcaw4bujYyBzYXUga2hpIGTDuW5nIGzhu4duaCBsw6AgODAuOTUNCg0KejIgPC0gbWVhbihzYzAxJGlmcikNCnoyDQpgYGANCjEuNCBT4butIGThu6VuZyBs4buHbmggbGVuZ3RoKCkgxJHhu4MgdMOtbmggdG/DoW4NCmBgYHtyfQ0KIyBM4buHbmggbGVuZ3RoKCkgY2hvIGJp4bq/dCBxdWFuIHPDoXQgY+G7p2EgZGF0YXNldHMgxJHDoyBjaOG7jW4gcmEgbMOgIDEwIHF1YW4gc8OhdCAgDQp6MyA8LSBsZW5ndGgoc2MwMSRpZnIpDQp6Mw0KYGBgDQoNCg0KMS41IFPhu60gZOG7pW5nIGzhu4duaCBzZCgpIMSR4buDIHTDrW5oIHRvw6FuIA0KYGBge3J9DQoNCg0KIyBM4buHbmggc2QoKSBkw7luZyDEkeG7gyB0w61uaCDEkeG7mSBs4buHY2ggY2h14bqpbiBj4bunYSBjw6FjIGdpw6EgdHLhu4sgdHJvbmcgdOG6rXAgZOG7ryBsaeG7h3UgxJHDoyBjaOG7jW4gdsOgIGvhur90IHF14bqjIHRodSDEkcaw4bujYyBsw6AgIDMwLjQ0NjcyDQp6NSA8LSBzZChzYzAxJGlmcikNCno1DQpgYGANCjEuNiBT4butIGThu6VuZyBs4buHbmggbWVkaWFuKCkgxJHhu4MgdMOtbmggdG/DoW4NCmBgYHtyfQ0KIyBM4buHbmggbWVkaWFuIGTDuW5nIMSR4buDIHTDrW5oIGdpw6EgdHLhu4sgdHJ1bmcgduG7iyBj4bunYSB04bqtcCBk4buvIGxp4buHdSDEkcOjIGNo4buNbiB2w6Aga+G6v3QgcXXhuqMgdGh1IMSRxrDhu6NjIGzDoCA5Ni4zNQ0KejYgPC0gbWVkaWFuKHNjMDEkaWZyKQ0KejYNCmBgYA0KMS43IFPhu60gZOG7pW5nIGzhu4duaCBxdWFudGlsZSgpIMSR4buDIHTDrW5oIHRvw6FuIA0KYGBge3J9DQojIEzhu4duaCBxdWFudGlsZSgpIGTDuW5nIMSR4buDIHTDrW5oIHRvw6FuIHBow6JuIHbhu4sgY+G7p2EgdOG6rXAgZOG7ryBsaeG7h3UgxJHDoyBjaOG7jW4uIFBow6JuIHbhu4sgbMOgIGdpw6EgdHLhu4sgY2hpYSB0aGVvIHBo4bqnbiB0csSDbSBj4bulIHRo4buDIHbDoCBr4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2MgbMOgIDI1JS04NS40NSwgNTAlLTk2LjM1LCA3NSUtOTguNjAgDQp6NyA8LSBxdWFudGlsZShzYzAxJGlmciwgcHJvYnMgPSBjKC4yNSwuNSwuNzUpKQ0KejcNCmBgYA0KMi4gVMOtbmggdG/DoW4gY8OhYyDEkeG6t2MgdHLGsG5nIMSRbyBsxrDhu51uZyB0aGVvIG5ow7NtIA0KMi4xIETDuW5nIGzhu4duaCBzYzAxICU+JSBncm91cF9ieSh1KSAlPiUgc3VtbWFyaXNlKG1lYW5fb2ZfaWZyID0gbWVhbihpZnIpKQ0KYGBge3J9DQojIEzhu4duaCBkw7luZyDEkeG7gyBuaMOzbSBk4buvIGxp4buHdSBjw6FjIHRyxrDhu51uZyDEkeG6oWkgaOG7jWMgY8OzIHRydW5nIGLDrG5oIGdp4bqjbmcgdmnDqm4gdGhhbSBnaWEgbmdoacOqbiBj4bupdSBraG9hIGjhu41jIA0KbW9jIDwtIHNjMDEgJT4lIGdyb3VwX2J5KHUpICU+JSBzdW1tYXJpc2UobWVhbl9vZl9pZnIgPSBtZWFuKGlmcikpDQptb2MNCmBgYA0KDQoyLjIgRMO5bmcgbOG7h25oIHNjMDEgJT4lIGdyb3VwX2J5KHUpICU+JSBzdW1tYXJpc2UobiA9IG4oKSxtZWFuX29mX2lmciA9IG1lYW4oaWZyKSkNCmBgYHtyfQ0KIyBM4buHbmggZMO5bmcgxJHhu4MgdMOtbmggxJHhur9tIHPhu5EgcXVhbiBzw6F0IMSR4buDIG5ow7NtIGPDoWMgdHLGsOG7nW5nIMSR4bqhaSBo4buNYyBjw7MgdOG7lW5nIHPhu5Egc2luaCB2acOqbiDEkeG6oWkgaOG7jWMgdsOgIHNhdSDEkeG6oWkgaOG7jWMgbMOgIG5nxrDhu51pIG7GsOG7m2Mgbmdvw6BpIHbDoCBkw6BuaCDDrXQgbmjhuqV0IGJhIHRow6FuZyB04bqhaSB0csaw4budbmcgxJHhuqFpIGjhu41jIGPhu6dhIGLhuqFuIHNvIHbhu5tpIHThu5VuZyBz4buRIHNpbmggdmnDqm4gxJHhuqFpIGjhu41jIHbDoCBzaW5oIHZpw6puIHNhdSDEkeG6oWkgaOG7jWMgbsOzaSBjaHVuZy4gDQptb2MwIDwtIHNjMDEgJT4lIGdyb3VwX2J5KHUpICU+JSBzdW1tYXJpc2UobiA9IG4oKSxtZWFuX29mX2lzciA9IG1lYW4oaXNyKSkNCm1vYzANCmBgYA0KDQoNCg0KDQoNCg0K