NHIỆM VỤ 2.1


1. Đọc dữ liệu từ file xlsx

  • Tải package xlsx và gọi dữ liệu file lên R với câu lệnh:

  • Đọc dữ liệu file xlsx với câu lệnh: read.xlsx()

library('xlsx') #gọi dữ liệu xlsx lên R
d <- read.xlsx(file = 'C:/Users/Admin/OneDrive/Documents/NNLT/afterlife.xlsx', sheetIndex = 1, header = T)

2. Sử dụng 1 bộ dữ liệu ‘CO2’

  • **Bộ dữ liệu ‘CO2** là bộ dữ liệu có sẵn trong package ’datasets’
  • Để sử dụng bộ dữ liệu ta cần thực hiện như sau

Bước 1: Tải gói package datasets với câu lệnh install.package()

library('datasets') #gọi package datasets sau khi đã tải xong
data(package = 'datasets') #xem trong gói package datasets có những bộ dữ liệu nào

Bước 2: Gọi bộ dữ liệu CO2 có sãn trong datasets

td <- CO2#gán bộ dữ liệu 'cars' vào a 

Bước 3: Sử dụng bộ dữ liệu CO2:

is.data.frame(td) #kiểm tra xem a có phải là 1 data frame hay không
## [1] TRUE
length(td) #kiểm tra chiều dài của dữ liệu
## [1] 5
names(td) #tên biến của dữ liệu
## [1] "Plant"     "Type"      "Treatment" "conc"      "uptake"
dim(td) #mô tả dữ liệu có bao nhiêu dòng và bao nhiêu cột 
## [1] 84  5
library(skimr) #gọi package skimr

skim(td) #mô tả chi tiết dữ liệu 
Data summary
Name td
Number of rows 84
Number of columns 5
_______________________
Column type frequency:
factor 3
numeric 2
________________________
Group variables None

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
Plant 0 1 TRUE 12 Qn1: 7, Qn2: 7, Qn3: 7, Qc1: 7
Type 0 1 FALSE 2 Que: 42, Mis: 42
Treatment 0 1 FALSE 2 non: 42, chi: 42

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
conc 0 1 435.00 295.92 95.0 175.0 350.0 675.00 1000.0 ▇▂▂▂▂
uptake 0 1 27.21 10.81 7.7 17.9 28.3 37.12 45.5 ▇▇▅▇▇
head(td,10) #đầu, hiện 10 dòng đầu tiên của dữ liệu
##    Plant   Type  Treatment conc uptake
## 1    Qn1 Quebec nonchilled   95   16.0
## 2    Qn1 Quebec nonchilled  175   30.4
## 3    Qn1 Quebec nonchilled  250   34.8
## 4    Qn1 Quebec nonchilled  350   37.2
## 5    Qn1 Quebec nonchilled  500   35.3
## 6    Qn1 Quebec nonchilled  675   39.2
## 7    Qn1 Quebec nonchilled 1000   39.7
## 8    Qn2 Quebec nonchilled   95   13.6
## 9    Qn2 Quebec nonchilled  175   27.3
## 10   Qn2 Quebec nonchilled  250   37.1
tail(td,10) #đuôi, hiện 10 dòng cuối của dữ liệu 
##    Plant        Type Treatment conc uptake
## 75   Mc2 Mississippi   chilled  500   12.5
## 76   Mc2 Mississippi   chilled  675   13.7
## 77   Mc2 Mississippi   chilled 1000   14.4
## 78   Mc3 Mississippi   chilled   95   10.6
## 79   Mc3 Mississippi   chilled  175   18.0
## 80   Mc3 Mississippi   chilled  250   17.9
## 81   Mc3 Mississippi   chilled  350   17.9
## 82   Mc3 Mississippi   chilled  500   17.9
## 83   Mc3 Mississippi   chilled  675   18.9
## 84   Mc3 Mississippi   chilled 1000   19.9

3. Rút trích dữ liệu từ bộ dữ liệu ‘CO2’

Đổi tên cho các biến để thuận tiện cho việc thao tác dữ liệu:

names(td) <- c('P', 'Ty', 'Tr', 'co', 'up')

Các thao tác rút trích dữ liệu:

td1 <- td[td$Tr =='chilled',]
str(td1)
## Classes 'nfnGroupedData', 'nfGroupedData', 'groupedData' and 'data.frame':   42 obs. of  5 variables:
##  $ P : Ord.factor w/ 12 levels "Qn1"<"Qn2"<"Qn3"<..: 4 4 4 4 4 4 4 6 6 6 ...
##  $ Ty: Factor w/ 2 levels "Quebec","Mississippi": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Tr: Factor w/ 2 levels "nonchilled","chilled": 2 2 2 2 2 2 2 2 2 2 ...
##  $ co: num  95 175 250 350 500 675 1000 95 175 250 ...
##  $ up: num  14.2 24.1 30.3 34.6 32.5 35.4 38.7 9.3 27.3 35 ...
##  - attr(*, "formula")=Class 'formula'  language uptake ~ conc | Plant
##   .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv> 
##  - attr(*, "outer")=Class 'formula'  language ~Treatment * Type
##   .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv> 
##  - attr(*, "labels")=List of 2
##   ..$ x: chr "Ambient carbon dioxide concentration"
##   ..$ y: chr "CO2 uptake rate"
##  - attr(*, "units")=List of 2
##   ..$ x: chr "(uL/L)"
##   ..$ y: chr "(umol/m^2 s)"
td2 <- td[td$Tr =='chilled' & td$Ty =='Quebec', ]
td3 <- td[td$co>600 ,]
td4 <- td[td$Tr != 'chilled',]

4. Một số package quan trọng khác của R

Packgae **tidyverse*:

Ví dụ:

tt <- trees
tich <- tt$Girth*tt$Height*tt$Volume
tt<- cbind(tt,tich)
l <- log(tich)
tt <- cbind(tt,l)

Ngoài ra chúng ta có thể sử dung package Tidyverse ( một package quan trọng của R, nó bao gồm nhiều package con ) để thay thế các thao tác trên bằng các lệnh sau:

library(tidyverse)
## ── 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
tt <- trees
tt <- tt %>% mutate(tich = Girth*Height*Volume)
tt <- tt %>% mutate(l = log(tich))

5. World Bank

World Bank lưu trữ rất nhiều thông tin kinh tế vĩ mô của nhiều nước trên thế giới và hoàn toàn cho phép người dùng truy cập và sử dụng dữ liệu.

NHIỆM VỤ 2.2


LS0tDQp0aXRsZTogIm5oaeG7h20gduG7pSAyIg0KZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJUg6JU06JVMsICVkIC0gJW0gLSAlWScpYCINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIHRvYzogdHJ1ZSANCiAgICBudW1iZXIgc2VjdGlvbjogdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KDQoNCiMgKipOSEnhu4ZNIFbhu6QgMi4xKioNCioqKg0KDQojIyAqKjEuIMSQ4buNYyBk4buvIGxp4buHdSB04burIGZpbGUgeGxzeCoqDQoNCiogVOG6o2kgcGFja2FnZSB4bHN4IHbDoCBn4buNaSBk4buvIGxp4buHdSBmaWxlIGzDqm4gUiB24bubaSBjw6J1IGzhu4duaDoNCg0KKiDEkOG7jWMgZOG7ryBsaeG7h3UgZmlsZSB4bHN4IHbhu5tpIGPDonUgbOG7h25oOiByZWFkLnhsc3goKQ0KDQpgYGB7cn0NCmxpYnJhcnkoJ3hsc3gnKSAjZ+G7jWkgZOG7ryBsaeG7h3UgeGxzeCBsw6puIFINCmQgPC0gcmVhZC54bHN4KGZpbGUgPSAnQzovVXNlcnMvQWRtaW4vT25lRHJpdmUvRG9jdW1lbnRzL05OTFQvYWZ0ZXJsaWZlLnhsc3gnLCBzaGVldEluZGV4ID0gMSwgaGVhZGVyID0gVCkNCmBgYA0KDQoNCiMjICoqMi4gU+G7rSBk4bulbmcgMSBi4buZIGThu68gbGnhu4d1ICdDTzInKioNCg0KKiAqKkLhu5kgZOG7ryBsaeG7h3UgJ0NPMioqIGzDoCBi4buZIGThu68gbGnhu4d1IGPDsyBz4bq1biB0cm9uZyBwYWNrYWdlICdkYXRhc2V0cycNCiogxJDhu4Mgc+G7rSBk4bulbmcgYuG7mSBk4buvIGxp4buHdSB0YSBj4bqnbiB0aOG7sWMgaGnhu4duIG5oxrAgc2F1IA0KDQoqKkLGsOG7m2MgMToqKiBU4bqjaSBnw7NpIHBhY2thZ2UgKipkYXRhc2V0cyoqIHbhu5tpIGPDonUgbOG7h25oICoqaW5zdGFsbC5wYWNrYWdlKCkqKg0KDQpgYGB7cn0NCmxpYnJhcnkoJ2RhdGFzZXRzJykgI2fhu41pIHBhY2thZ2UgZGF0YXNldHMgc2F1IGtoaSDEkcOjIHThuqNpIHhvbmcNCmRhdGEocGFja2FnZSA9ICdkYXRhc2V0cycpICN4ZW0gdHJvbmcgZ8OzaSBwYWNrYWdlIGRhdGFzZXRzIGPDsyBuaOG7r25nIGLhu5kgZOG7ryBsaeG7h3UgbsOgbw0KYGBgDQoNCioqQsaw4bubYyAyOioqIEfhu41pIGLhu5kgZOG7ryBsaeG7h3UgQ08yIGPDsyBzw6NuIHRyb25nIGRhdGFzZXRzIA0KDQpgYGB7cn0NCnRkIDwtIENPMiNnw6FuIGLhu5kgZOG7ryBsaeG7h3UgJ2NhcnMnIHbDoG8gYSANCmBgYA0KDQoqKkLGsOG7m2MgMzoqKiBT4butIGThu6VuZyBi4buZIGThu68gbGnhu4d1ICoqQ08yKio6DQpgYGB7cn0NCmlzLmRhdGEuZnJhbWUodGQpICNraeG7g20gdHJhIHhlbSBhIGPDsyBwaOG6o2kgbMOgIDEgZGF0YSBmcmFtZSBoYXkga2jDtG5nDQpsZW5ndGgodGQpICNraeG7g20gdHJhIGNoaeG7gXUgZMOgaSBj4bunYSBk4buvIGxp4buHdQ0KbmFtZXModGQpICN0w6puIGJp4bq/biBj4bunYSBk4buvIGxp4buHdQ0KZGltKHRkKSAjbcO0IHThuqMgZOG7ryBsaeG7h3UgY8OzIGJhbyBuaGnDqnUgZMOybmcgdsOgIGJhbyBuaGnDqnUgY+G7mXQgDQoNCmxpYnJhcnkoc2tpbXIpICNn4buNaSBwYWNrYWdlIHNraW1yDQoNCnNraW0odGQpICNtw7QgdOG6oyBjaGkgdGnhur90IGThu68gbGnhu4d1IA0KDQpoZWFkKHRkLDEwKSAjxJHhuqd1LCBoaeG7h24gMTAgZMOybmcgxJHhuqd1IHRpw6puIGPhu6dhIGThu68gbGnhu4d1DQp0YWlsKHRkLDEwKSAjxJF1w7RpLCBoaeG7h24gMTAgZMOybmcgY3Xhu5FpIGPhu6dhIGThu68gbGnhu4d1IA0KYGBgDQoNCiMjICoqMy4gUsO6dCB0csOtY2ggZOG7ryBsaeG7h3UgdOG7qyBi4buZIGThu68gbGnhu4d1ICdDTzInKioNCg0KKirEkOG7lWkgdMOqbiBjaG8gY8OhYyBiaeG6v24gxJHhu4MgdGh14bqtbiB0aeG7h24gY2hvIHZp4buHYyB0aGFvIHTDoWMgZOG7ryBsaeG7h3U6KioNCmBgYHtyfQ0KbmFtZXModGQpIDwtIGMoJ1AnLCAnVHknLCAnVHInLCAnY28nLCAndXAnKQ0KYGBgDQoNCioqQ8OhYyB0aGFvIHTDoWMgcsO6dCB0csOtY2ggZOG7ryBsaeG7h3U6KioNCmBgYHtyfQ0KdGQxIDwtIHRkW3RkJFRyID09J2NoaWxsZWQnLF0NCnN0cih0ZDEpDQp0ZDIgPC0gdGRbdGQkVHIgPT0nY2hpbGxlZCcgJiB0ZCRUeSA9PSdRdWViZWMnLCBdDQp0ZDMgPC0gdGRbdGQkY28+NjAwICxdDQp0ZDQgPC0gdGRbdGQkVHIgIT0gJ2NoaWxsZWQnLF0NCmBgYA0KIyMgKio0LiBN4buZdCBz4buRIHBhY2thZ2UgcXVhbiB0cuG7jW5nIGtow6FjIGPhu6dhIFIqKg0KDQojIyMgUGFja2dhZSAqKnRpZHl2ZXJzZSo6DQoNCl9Ww60gZOG7pTpfDQpgYGB7cn0NCnR0IDwtIHRyZWVzDQp0aWNoIDwtIHR0JEdpcnRoKnR0JEhlaWdodCp0dCRWb2x1bWUNCnR0PC0gY2JpbmQodHQsdGljaCkNCmwgPC0gbG9nKHRpY2gpDQp0dCA8LSBjYmluZCh0dCxsKQ0KYGBgDQoNCj4gTmdvw6BpIHJhIGNow7puZyB0YSBjw7MgdGjhu4Mgc+G7rSBkdW5nIHBhY2thZ2UgVGlkeXZlcnNlICggbeG7mXQgcGFja2FnZSBxdWFuIHRy4buNbmcgY+G7p2EgUiwgbsOzIGJhbyBn4buTbSBuaGnhu4F1IHBhY2thZ2UgICBjb24gKSDEkeG7gyB0aGF5IHRo4bq/IGPDoWMgdGhhbyB0w6FjIHRyw6puIGLhurFuZyBjw6FjIGzhu4duaCBzYXU6IA0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KdHQgPC0gdHJlZXMNCnR0IDwtIHR0ICU+JSBtdXRhdGUodGljaCA9IEdpcnRoKkhlaWdodCpWb2x1bWUpDQp0dCA8LSB0dCAlPiUgbXV0YXRlKGwgPSBsb2codGljaCkpDQoNCmBgYA0KDQoNCiMjICoqNS4gV29ybGQgQmFuayoqDQoqKldvcmxkIEJhbmsqKiBsxrB1IHRy4buvIHLhuqV0IG5oaeG7gXUgdGjDtG5nIHRpbiBraW5oIHThur8gdsSpIG3DtCBj4bunYSBuaGnhu4F1IG7GsOG7m2MgdHLDqm4gdGjhur8gZ2nhu5tpIHbDoCBob8OgbiB0b8OgbiBjaG8gcGjDqXAgbmfGsOG7nWkgZMO5bmcgdHJ1eSBj4bqtcCB2w6Agc+G7rSBk4bulbmcgZOG7ryBsaeG7h3UuDQoNCiMgKipOSEnhu4ZNIFbhu6QgMi4yKioNCioqKg0KDQoNCg0K