Guide R Language

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 15

„I HÅC QUÈC GIA TH€NH PHÈ HÇ CH MINH

TR×ÍNG „I HÅC BCH KHOA

KHOA KHOA HÅC & Kß THUŠT MY TNH

C‡U TRÓC RÍI R„C CHO KHMT (CO1007)

R cho b i tªp lîn

GVHD: Huýnh T÷íng Nguy¶n


Tr¦n Tu§n Anh
Nguy¹n Ngåc L¹

Tp. Hç Ch½ Minh, Th¡ng 05/2020


Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

Möc löc
1 Giîi thi»u ngæn ngú lªp tr¼nh R 2
1.1 Xû lþ cì b£n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Dú li»u sè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Dú li»u kþ tü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Ma trªn - Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1 Chi·u cõa ma trªn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2 Th¶m dáng, cët . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.3 Ch¿ sè ma trªn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Danh s¡ch - List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 The tidyverse 9
2.1 Khung dú li»u - Data frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 C¡c thao t¡c tr¶n data frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3 C§u tróc 12
3.1 Vi¸t h m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Xû lþ chuéi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Xû lþ ng y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4 Trüc quan dú li»u 13


4.1 ggplot2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

T i li»u 13

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 1/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

1 Giîi thi»u ngæn ngú lªp tr¼nh R


Trong mòa dàch Covid-19, tr÷íng ¤i håc B¡ch Khoa, DDHQF-HCM ¢ triºn khai gi£ng d¤y trüc
tuy¸n v  y¶u c¦u sinh vi¶n thüc hi»n c¡c b i tªp nhä º thu nhªn ph£n hçi v· vi»c håc tªp v  hiºu bi¸t
cõa c¡c b¤n thæng qua c¡c t i nguy¶n online ÷ñc cung c§p.
Ph¥n t½ch & thèng k¶ dú li»u qua c¡c l¦n nëp b i cõa sinh vi¶n khæng nhúng gióp gi¡o vi¶n câ nhúng
h÷îng óng trong vi»c ph¡t hi»n ra nhúng ki¸n thùc m  sinh vi¶n ch÷a ch­c ch­n, công nh÷ câ h÷îng
º c£i thi»n bê sung ph¦n håc li»u trong t÷ìng lai º phò hñp vîi hìn ng÷íi håc.

1.1 Xû lþ cì b£n
Khai ph¡ dú li»u tø h» thèng nëp b i online câ þ ngh¾a quan trång trong vi»c ¡nh gi¡ ch§t l÷ñng cõa
sinh vi¶n. Ngo i ra, nhúng ¡nh gi¡ k¸t qu£ nëp b i cõa tøng sinh vi¶n, hay tøng b i tªp s³ gâp ph¦n
x¡c ành nhúng iºm m¤nh, iºm y¸u cõa sinh vi¶n º gi¡o vi¶n câ ph÷ìng ph¡p phò hñp trong vi»c c£i
thi»n kÿ n«ng cõa sinh vi¶n.
Trong b i tªp lîn n y, c¡c sinh vi¶n s³ b­t ¦u vîi c¡c b i to¡n thèng k¶ ìn gi£n tø nhúng dú li»u
÷ñc cung c§p. Qua â, c¡c em s³ t¼m ra nhúng con sè thó và, câ þ ngh¾a èi vîi c¡c dú li»u thüc t¸
trong qu¡ khù cõa h» thèng ch§m b i online. Nhúng k¸t qu£ m  c¡c em t¼m ra s³ l  b÷îc khði ¦u cho
vi»c khai ph¡ nguçn dú li»u cõa h» thèng sau n y, nh¬m ¤t tîi möc ti¶u n¥ng cao kÿ n«ng lªp tr¼nh,
kÿ n«ng gi£i quy¸t v§n · cho ng÷íi håc công nh÷ h÷îng tîi möc ti¶u cao hìn khi t½ch hñp vîi c¡c h»
thèng qu£n lþ v  c£i thi»n ch§t l÷ñng d¤y v  håc.

1.2 Vector
1.2.1 Dú li»u sè
Class Exams Homework Projects

Math 92 87 85
Chemistry 90 81 92
Writing 84 95 79
Art 95 86 93
Music 92 90 91
Physical Education 85 88 95

Ta câ iºm cuèi còng cho méi lîp v  g¡n chóng cho c¡c bi¸n:
math <- 88
chemistry <- 87.66667
writing <- 86
art <- 91.33333
history <- 84
music <- 91
physical_education <- 89.33333

T¤o mët vector iºm lîp håc cuèi còng.


final_scores <- c(math, chemistry, writing, art, history, music, physical_education)
Hiºn thà kiºu dú li»u cõa final_scores
Source: typeof(final_scores)
Output: "double"

Mët sè thao t¡c th¶m cho vector trong ph¥n t½ch dú li»u

ˆ Mët tªp con c¡c gi¡ trà trong vectors

ˆ G¡n t¶n ¸n mët th nh ph¦n trong vector

ˆ Dòng c¡c to¡n tû º tr£ líi c¡c c¥u häi v· dú li»u trong ÷ñc chùa trong vector

Vîi mët vector, méi th nh ph¦n câ mët và tr½. Trong ngæn ngú lªp tr¼nh R, ch¿ sè ÷ñc b­t ¦u tø
1 ( 1-indexed), ngh¾a l  th nh ph¦n ¦u ti¶n trong vector ÷ñc g¡n 1 và tr½ l  mët.

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 2/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

Position 1 2 3 4 5 6 7
Final_scores 88 87.6667 86 91.33333 84 91 89.3333

Tr½ch c¡c gi¡ trà tø vector b¬ng c¡ch ch¿ ra và tr½ cõa chóng trong [ ]
Source: final_scores[3]
Output: 86

Tr½ch nhi·u th nh ph¦n b¬ng c¡ch dòng c()


Source: final_scores[c(1,3,7)]
Output: 88.00000 86.00000 89.33333

Chån ra mët d¢y c¡c th nh ph¦n k¸ nhau b¬ng c¡ch dòng d§u 2 ch§m :
Source: final_scores[1:4]
Output: 88.00000 87.66667 86.00000 91.33333

Practices
iºm trong lîp STEM gçm câ (science, technology, engineering, and math), cán l i l  lîp non-STEM.

1. Vi¸t code tao mët vector mîi, stem_grades ch¿ chùa iºm to¡n v  hâa
2. Tao mët vector mîi, stem_grades chùa iºm cuèi còng trong lîp kh¡c lîp STEM
3. T½nh gi¡ tri trung b¼nh méi vector v  l÷u gi¡ trà v o c¡c bi¸n avg_stem_grades,
avg_non_stem_grades

1.2.2 Dú li»u kþ tü
T¤o mët vector chùa t¶n cõa 2 lîp b¬ng c¡ch dòng d§u nh¡y ìn ho°c æi ( or "")
math_chemistry <- c("math", "chemistry")
Source: typeof(math_chemistry)
Output: "character"

Trong R, ta câ thº g¡n th¶m thuëc t½nh ¸n mët vector. Thuëc t½nh s³ cung c§p th¶m thæng tin, nh÷
t¶n, v· c¡c gi¡ trà trong mët vector. º g¡n t¶n ¸n c¡c th nh ph¦n cõa vector ta dòng h m name()
Source: Output:
math_chemistry <- c(88, 87.66667)
class_names <- c("math", "chemistry") math chemistry
names(math_chemistry) <- class_names 88.00000 87.66667
print(math_chemistry)\\

1.3 Ma trªn - Matrices


Trong ph¦n n y ta håc th¶m v· c§u tróc dú li»u v· ma trªn trong R. Nh÷ vector, ma trªn giú dú li»u
kiºu sè ho°c kiºu luªn lþ. Mët ma trªn bao gçm nhi·u dáng v  nhi·u cët, ma trªn thº hi»n mët khæng
gian 2 chi·u, cán vector l  mët chi·u.

H¼nh 1: Vector v  matrix


Ta s³ håc dòng ma trªn º chùa thæng tin v· x¸p h¤ng c¡c tr÷íng ¤i håc.

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 3/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

Nguçn dú li»u ¸n tø tªp dú li»u x¸p h¤ng ¤i håc thîi giîi. 100 tr÷íng h ng ¦u tr¶n thîi giîi ÷ñc
x¸p theo chu©n. ¥y l  v i dáng dú li»u m¨u.

University world_rank quality_of_education influence broad_impact patents


Harvard 1 1 1 1 3
Stanford 2 9 3 4 10
Stanford 2 9 3 4 10
MIT 3 3 2 2 1
Cambridge 4 2 6 13 48
Oxford 5 7 12 9 15
Oxford 6 13 13 12 4

¦u ti¶n ta dòng h m c() º t¤o c¡c vector:


harvard <- c(1,1,1,1,3) stanford <- c(2,9,3,4,10) MIT <- c(3,3,2,2,1) cambridge <- c(4,2,6,13,48) oxford
<- c(5,7,12,9,15) columbia <- c(6,13,13,12,4)
Ti¸p theo ta dòng h m rbind() º tê hñp c¡c vector th nh mët ma trªn. Vîi "r" trong rbind() ¤i
di»n cho dáng.
Source: Output:
[,1] [,2] [,3] [,4] [,5]
harv_stan <- rbind(harvard, stanford) Harvard 1 1 1 1 3
Stanford 2 9 3 4 10

Ta câ thº dòng h m rbind() º g­n 1 dáng ìn ¸n mët ma trªn ang tçn t¤i ho°c tê hñp 2 ma tr¦n
b¬ng c¡ch chçng 2 ma trªn l¶n nhau.
Source: Output:
[,1] [,2] [,3] [,4] [,5]
Harvard 1 1 1 1 3
rbind(harv_stan, MIT)
Stanford 2 9 3 4 10
MIT 3 3 2 2 1

Chóng ta ¢ bi¸t c¡ch g­n thuëc t½nh t¶n ¸n vector, èi vîi ma trªn th¶m t¶n v o h ng ho°c cët
cõa ma trªn t÷ìng tü nh÷ °t t¶n c¡c ph¦n tû cõa vector. Trong tr÷íng hñp l  vector ta sû döng h m
name(), tr÷íng hñp ma trªn ta sû döng h m

ˆ Rows: rownames()

ˆ Columns: colnames()

. °t t¶n c¡c cët cho ma trªn:


Source:
harv_stan <- rbind(harvard, stanford)
colnames(harv_stan) <- c("world_rank", "quality_of_education","influence","broad_impact",
"patents")
Output:

world_rank quality_of_education influence broad_impact patents


Harvard 1 1 1 1 3
Stanford 2 9 3 4 10

1.3.1 Chi·u cõa ma trªn


X¡c ành chi·u cõa ma trªn (sè dáng, sè cët) b¬ng c¡ch sû döng h m dim()

ˆ dim(harv_stan): 2 5 # 2 dáng, 5 cët

ˆ dim(harv_stan)[1]: 2

ˆ dim(harv_stan)[2]: 5

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 4/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

1.3.2 Th¶m dáng, cët


ˆ rbind(): tê hñp c¡c vector ho°c ma trªn b¬ng dáng

ˆ cbind(): tê hñp c¡c vector ho°c ma trªn b¬ng cët

Source:
harv_stan_tuition <- c(43280, 45000)
cbind(harv_stan, harv_stan_tuition)
Output:
world_rank quality_of_education influence broad_impact patents harv_stan_tuition
harvard 1 1 1 1 3 43280
stanford 2 9 3 4 10 45000

1.3.3 Ch¿ sè ma trªn


ˆ º chån mët th nh ph¦n cõa ma trªn ta c¦n ch¿ sè dáng v  ch¿ sè cët ho°c t¶n cõa dáng v  cët
tr÷ìng ùng

Source: Output:
harv\_stan[2, 5] 10
harv\_stan["stanford", "patents"] 10

ˆ º chån nhi·u hìn mët th nh ph¦n trong ma trªn ta câ thº ch¿ ra mët kho£ng dáng ho°c cët t÷ìng
ùng

ˆ dòng d§u :

Source: Output:

broad_impact patents
harv_stan[2, 4:5]
4 10

ˆ Chóng ta công câ thº lªp ch¿ möc ma trªn º tr½ch xu§t c¡c ph¦n tû khæng n¬m c¤nh nhau. B¬ng
c¡ch sû döng c() º ch¿ ra dáng v  cët ta c¦n tr½ch ra

Source: Output:
harv_stan[c(1,2), c(1,3)] world_rank influence
harv_stan[c("harvard", "stanford"), harvard 1 1
c("world_rank", "influence")] stanford 2 9

ˆ º tr½ch xu§t to n bë h ng ho°c cët

 harv_stan["harvard",]

 harv_stan[,"quality_of_education"]

1.4 Danh s¡ch - List


ˆ Vectors: C§u tróc dú li»u mët chi·u chùa mët kiºu dú li»u.

ˆ Matrices: C§u tróc dú li»u hai chi·u chùa mët kiºu dú li»u.

ˆ List: C§u tróc dú li»u chùa nhi·u kiºu èi t÷ñng. C¡c èi t÷ñng câ thº gçm c¡c c§u tróc dú li»u
kh¡c nhau nh÷ c¡c ph¦n tû dú li»u ìn, vectors, c¡c ma trªn

Sùc m¤nh cõa danh s¡ch: Thüc hi»n còng mët thao t¡c tr¶n tøng èi t÷ñng trong danh s¡ch cõa b¤n,
i·u n y câ thº cho ph²p b¤n tr¡nh l°p l¤i vi»c gã còng mët chùc n«ng.
T¤o mët danh s¡ch: uni_clubs <- list("ballroom dancing", "rugby", "bird watching", "pottery")

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 5/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

H¼nh 2: Ùng döng danh s¡ch


[[1]]
[1] "ballroom dancing"

[[2]]
[1] "rugby"

[[3]]
[1] "bird watching"

[[4]]
[1] "pottery"
Tê chùc dú li»u c¥u l¤c bë cí trong mët danh s¡ch vîi c¡c m¨u thæng tin sau:

ˆ T¶n c¥u l¤c bë (vector kiºu dú li»u kþ tü)

ˆ Mæ t£ c¥u l¤c bë (vector kiºu dú li»u kþ tü)

ˆ L» ph½ tham gia (vector kiºu dú li»u sè)

ˆ Ng y hñp (vector kiºu dú li»u kþ tü)

ˆ Thíi gian hñp (vector kiºu dú li»u kþ tü)

source
club_title <- c("Chess Club")
club_description <- c(Meets two nights a week for members to play chess. Snacks are provided.)
club_dues <- c(50, 20, 15)
meeting_days <- c(Monday, Wednesday)
meeting_times <- c(6:00 pm, 8:00 pm)
club_meetings <- rbind(meeting_days,meeting_times)
chess_club <- list(club_title,club_description,club_dues,club_meetings)
club_meetings
chess_club
Output

[[1]]
[1] "Chess Club"

[[2]]
[1] "Meets two nights a week for members to play chess. Snacks are provided."

[[3]]
[1] 50 20 15

[[4]]

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 6/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

[,1] [,2]
meeting_days "Monday" "Wednesday"
meeting_times "6:00 pm" "8:00 pm"

[,1] [,2]
meeting_days Monday Wednesday
meeting_times 6:00 pm 8:00 pm

ˆ °t t¶n cho èi t÷ñng

Ta câ thº g¡n t¶n cho ¸n c¡c èi t÷ñng trong danh s¡ch l  t÷ìng tü nh÷ °t t¶n cho c¡c th nh ph¦n
trong mët vector. Chóng ta s³ dòng h m names()
source
ballroom_dancing <- list(c("Ballroom Dancing Club"), c("Practices waltz, salsa, and tango dancing for
competitions with local university dance teams"), c(150))
names(ballroom_dancing) <- c("club_title", "club_description", "club_dues")
Output

$club_title
[1] "Ballroom Dancing Club"

$club_description
[1] "Practices waltz, salsa, and tango dancing for competitions with local university dance teams"

$club_dues
[1] 150
º ¡nh ch¿ möc danh s¡ch, thæng th÷íng ta s³ dòng 2 c¡ch ¡nh ch¿ möc:

ˆ D§u ngo°c ìn º tr£ v· danh s¡ch c¡c th nh ph¦n ÷ñc chån ([ ])

ˆ D§u ngo°c k²p º tr£ v· mët ph¦n tû ([[ ]])


Tr½ch xu§t èi t÷ñng thù hai trong danh s¡ch dòng [] v  chóng ta vi¸t o¤n m¢ sau:
Source: Output:

rugby_club[2] $club_description
[1] Plays matches against clubs from local universi-
ties
typeof(rugby_club[2]) [1]list

Tr½ch xu§t èi t÷ñng thù hai trong danh s¡ch dòng [[ ]]:
Source: Output:

rugby_club[[2]] [1] "Plays matches against clubs from local univer-


sities"

typeof(rugby_club[[2]]) [1] "character"

Thüc h nh
Mët danh s¡ch chess_club nh÷ sau:

$club_title
[1] "Chess Club"

$club_description
[1] "Meets two nights a week for members to play chess. Snacks are provided."

$club_dues
[1] 50 20 15

$club_meetings

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 7/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

[,1] [,2]
meeting_days "Monday" "Wednesday"
meeting_times "6:00 pm" "8:00 pm"
ˆ ¡nh ch¿ möc chess_club list tr£ l¤i ph¦n tû thù 2 cõa club_dues

Code chess_club[[3]][2] ho°c chess_club[[c(3,2)]]


º thay th¸ c¡c gi¡ trà club_dues trong rugby_club rugby_club$club_dues <- c(110, 60) º thay th¸
gi¡ trà 110 l¤i th nh 60: rugby_club[[c(3, 1)]] <- 60

ˆ Vi¸t m¢ º thay th¸ ph¦n tû thù ba cõa club_dues th nh 5.

ˆ Hiºn thà ph¦n tû thù ba cõa club_dues trong danh s¡ch Chess_club º kiºm tra xem b¤n ¢ thay
th¸ nâ óng ch÷a.

Code
chess_club[[c(3,3)]]<-5
chess_club[[c(3,3)]]
Thæng tin d÷îi d¤ng dú li»u sè trong mët ma trªn câ t¶n Member_years_rugby. Chóng ta muèn
th¶m ma trªn n y l m èi t÷ñng v o danh s¡ch rugby_club, hi»n câ ba èi t÷ñng:
chóng ta câ thº ch¿ ành và tr½ m  chóng ta muèn ph¦n tû mîi xu§t hi»n: rugby_club[[4]] <- mem-
ber_years_rugby
Output

$club_title
[1] "Rugby Club"

$club_description
[1] "Plays matches against clubs from local universities"

$club_dues
[1] 80 60

[[4]]
first_yr second_yr third_yr fourth_yr
fall 8 12 13 2
spring 6 11 14 3
Thüc h nh
ˆ Th¶m mët vector first_year nh÷ mët èi t÷ñng, câ còng t¶n, ¸n cuèi danh s¡ch chess_club

 Sû döng có ph¡p chess_club [["object_name"]] <- object º th¶m vectì vîi t¶n ÷ñc g¡n

ˆ ¡nh ch¿ möc chess_ club º hiºn thà sè l÷ñng sinh vi¶n n«m thù nh§t tham gia c¥u l¤c bë cí vua
trong håc ký mòa xu¥n n«m ngo¡i.

Code
first_years <- c(12, 15)
names(first_years) <- c("fall", "spring")
chess_club[["first_years"]] <- first_years
chess_club$first_years[[2]]
Tê hñp c¡c danh s¡ch v o mët danh s¡ch ìn

ˆ º tê hñp 2 danh s¡ch rugby_club v  ballroom_dancing v o mët danh s¡ch mîi ta câ thº dòng
h m c()

 uni_club_data <- c(rugby_club, ballroom_dancing)

ˆ k¸t hñp c¡c danh s¡ch b£o tçn tê chùc cõa tøng danh s¡ch (v¼ câ thº còng t¶n giúa c¡c th nh ph¦n).
Ta dòng list º t¤o 1 danh s¡ch cõa c¡c danh s¡ch

 uni_club_list <- list(rugby_club = rugby_club, ballroom_dancing = ballroom_dancing)

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 8/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

2 The tidyverse
2.1 Khung dú li»u - Data frame
Data frame câ thº l  c§u tróc phê bi¸n nh§t m  b¤n s³ l m vi»c khi ph¥n t½ch dú li»u trong R, v¼ vªy
chóng tæi s³ gióp b¤n x¥y düng sü hiºu bi¸t cì b£n m¤nh m³ v· c¡ch thao t¡c sau â. Gièng nh÷ danh
s¡ch, data frame câ thº chùa nhi·u lo¤i dú li»u. Tuy nhi¶n, khæng gièng nh÷ danh s¡ch, t§t c£ c¡c ph¦n
tû cõa khung dú li»u l  c¡c vectì câ ë d i b¬ng nhau.
Khi l m vi»c dú li»u vîi R, ta s³ nhªp dú li»u v o R v  l÷u nâ nh÷ 1 data frame. Thay v¼ dòng c¡c
h m cì b£n cõa R cho nhªp li»u.

C i °t v  load gâi readr


Ta s³ dòng 1 gâi readr gâi n y chùa c¡c h m cho nhªp dú li»u vîi nhi·u ành d¤ng kh¡c nhau.
Gâi readr l  ph¦n cõa tidyverse câ tªp c¡c gâi º c£i ti¸n quy tr¼nh khoa håc dú li»u trong v i c¡ch:

ˆ Tèc ë nhªp vai dú li»u c ng lîn c¡c h m readr th÷íng nhanh hìn c¡c h m cì b£n trong R

ˆ Kh£ n«ng dòng l¤i readr khæng phö thuëc l¶n h» i·u h nh v  c¡c bi¸n mæi tr÷íng.

ˆ T½nh nh§t qu¡n gâi readr t÷ìng th½ch vîi c¡c gâi tinyverse

º c i °t mët gâi R, ta dòng h m install.packages(): install.packages(readr). Sau khi ¢ c i °t
c¡c gâi, chóng ta c¦n load gâi m  chóng ta muèn l m vi»c vîi nâ khi b­t ¦u mët phi¶n l m vi»c mîi.
º load c¡c gâi ta dóng h m library(): library(readr)
Th½ dö:

library(readr)
recent_grads <- read_csv("recent_grads.csv")

C i °t v  load gâi xlsx


install.packages("xlsx")
library("xlsx")
åc mët excel file:
read.xlsx2(file, sheetIndex, header=TRUE, colClasses="character")

ˆ file: ÷íng d¨n ¸n file º åc

ˆ sheetIndex: mët sè ch¿ ành mët sheet º åc; sheetIndex=1 åc sheet ¦u ti¶n

ˆ header: N¸u l  TRUE, dáng ¦u ti¶n ÷ñc dòng nh÷ t¶n bi¸n

ˆ colClasses: mët vector kþ tü thº hi»n lîp méi cët

Th½ dö:

library(xlsx)
recent_grads <- read.xlsx2("DATA\\test_import.xlsx", sheetIndex = 1)
head(res[, 1:6])

2.2 C¡c thao t¡c tr¶n data frame


M°c dò ta câ thº ¡nh ch¿ möc data frame º tr£ l¤i 1 tªp con cõa c¡c cët, ta n¶n dòng mët cæng cö
trong gâi tidyverse ÷ñc thi¸t k¸ cö thº cho ph¥n t½ch dú li»u trong data frame dplyr
C i °t v  load gâi:
install.packages(dplyr)
library(dplyr)
Thao t¡c dú li»u li¶n quan ¸n vi»c i tø dú li»u thæ ¸n dú li»u ÷ñc xû lþ.

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 9/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

Thæ: ¢ xû lþ:
Dú li»u gèc. S®n s ng cho ph¥n t½ch.
Th÷íng khâ dòng trüc ti¸p cho ph¥n t½ch Dú li»u sau khi ¢ chuyºn êi, hñp nh§t,...
dú li»u. T§t c£ c¡c b÷îc ÷a ta i tø dú li»u thæ
Ta khæng n¶n xû lþ dú li»u gèc. ¢ ÷ñc xû lþ n¶n ÷ñc so¤n s®n.
Dú li»u: C¡c quan s¡t n¬m trong c¡c h ng, c¡c bi¸n n¬m trong c¡c cët. dplyr::glimpse(grads)

H¼nh 3: Dú li»u

Rows: 722
Columns: 16
$ M¢.s.U.1ED1..ID <chr> "1911478", "1914405", "1914405", "1911478", "1912
$ T¼nh.tr.U.1EA1.ng <chr> "¢ ho n th nh", "¢ ho n th nh", "¢ ho n th nh"
$ ¢.b.U.1EAF.t.d.U.1EA7.u.v o.lóc <chr> "20 March 2020 9:13 AM", "20 March 2020 9:16 AM
$ ¢.ho n.th nh <chr> "20 March 2020 9:24 AM", "20 March 2020 9:18 AM
$ Th.U.1EDD.i.gian.th.U.1EF1.c.hi.U.1EC7.n <chr> "10 phót 56 gi¥y", "2 phót 17 gi¥y", "1 phót 6 gi
$ i.U.1EC3.m.10.00 <chr> "8,50", "8,50", "9,50", "10,00", "10,00", "9,00",
$ Q..1..1.00 <chr> "1,00", "1,00", "1,00", "1,00", "1,00", "1,00", "
$ Q..2..1.00 <chr> "1,00", "1,00", "1,00", "1,00", "1,00", "1,00", "
$ Q..3..1.00 <chr> "1,00", "1,00", "1,00", "1,00", "1,00", "1,00", "
$ Q..4..1.00 <chr> "1,00", "1,00", "1,00", "1,00", "1,00", "1,00", "
$ Q..5..1.00 <chr> "1,00", "1,00", "1,00", "1,00", "1,00", "1,00", "
$ Q..6..1.00 <chr> "1,00", "1,00", "1,00", "1,00", "1,00", "1,00", "
$ Q..7..1.00 <chr> "0,50", "0,50", "0,50", "1,00", "1,00", "1,00", "
$ Q..8..1.00 <chr> "1,00", "1,00", "1,00", "1,00", "1,00", "1,00", "
$ Q..9..1.00 <chr> "0,00", "0,00", "1,00", "1,00", "1,00", "0,00", "
$ Q..10..1.00 <chr> "1,00", "1,00", "1,00", "1,00", "1,00", "1,00", "

Èng %>%:
ˆ To¡n tû èng - pipe operator %>%

 º ta vi¸t chuéi li¶n ti¸p c¡c xû lþ vîi nhau

 åc %>% nh÷ then

 L m cho code d¹ hiºu, vi¸t, d¹ åc hìn

ˆ x %>% f(y) -> f(x,y)

ˆ x %>% f(z,.) -> f(z, x)

C¡c h m:

ˆ filter: chån h ng

ˆ arrange: s­p thù tü dáng

ˆ select: chån cët

ˆ rename: êi t¶n cët

ˆ distinct: t¼m c¡c h ng ri¶ng bi»t

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 10/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

ˆ mutate: th¶m c¡c bi¸n mîi

ˆ summarise: tâm t­t tr¶n mët tªp dú li»u

ˆ sample_n: l§y m¨u tø tªp dú li»u.

Th½ dö:

ˆ filter

Source:
grads %>% filter(¢.ho n.th nh == '-')
Output

M¢.s.U.1ED1..ID T¼nh.tr.U.1EA1.ng ¢.b.U.1EAF.t.d.U.1EA7.u.v o.lóc ¢.ho n.th nh


1 1912916 Chua bao gi<U+1EDD> g<U+1EED>i 20 March 2020 2:20 PM -
Th.U.1EDD.i.gian.th.U.1EF1.c.hi.U.1EC7.n i.U.1EC3.m.10.00 Q..1..1.00 Q..2..1.00 Q..3..1.00 Q..4..
1 - - - - -
Q..6..1.00 Q..7..1.00 Q..8..1.00 Q..9..1.00 Q..10..1.00
1 - - - - -

ˆ select

Source:
grads %>% select(M¢.s.U.1ED1..ID, i.U.1EC3.m.10.00) %>% head(3)
Output

M¢.s.U.1ED1..ID i.U.1EC3.m.10.00
1 1911478 8,50
2 1914405 8,50

C¡c tòy chån cho mutate/sumarise


ˆ mean: trung b¼nh trong c¡c nhâm

ˆ sum: têng trong c¡c nhâm

ˆ sd: ë l»ch chu©n trong c¡c nhâm

ˆ max: lîn nh§t trong c¡c nhâm

ˆ ...

Th½ dö:
Source:
processed_samples %>% group_by(M¢.s.U.1ED1..ID) %>% summarise(M¢.s.U.1ED1..ID = n()) %>%
arrange(-M¢.s.U.1ED1..ID)
Output

M¢.s.U.1ED1..ID
<int>
1 3
2 2
3 2
4 1
5 1
6 1

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 11/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

3 C§u tróc
3.1 Vi¸t h m
# Function template
my_function = function(input1, input2, ..., inputN) # Define inputs
{
# Define 'output' using input1,...,inputN
return(output) # Return this output
}

Source
add_numbers = function(x, y){
# Define z as sum of x and y
z = x + y
# Return z
return(z)
}
add_numbers(2, 4)
Output
6

3.2 Xû lþ chuéi
C¡c h m h m húu döng:

ˆ str_length: chi·u d i chuéi

ˆ str_c: tê hñp chuéi

ˆ str_sub: tªp con chuéi

ˆ str_to_lower: chuéi ¸n chú th÷íng

Th½ dö:
# New vector of strings
x = c("apple", "banana", "pear", "213")

ˆ str_replace

Source x %>% str_replace([0-9], \\?)


Output

[1] apple banana pear ?13

ˆ str_replace_all

Source x %>% str_replace_all([0-9], \\?)


Output

[1] apple banana pear ???

3.3 Xû lþ ng y
T¤o èi t÷ñng ng y gií tø chuéi
strptime Chuyºn êi chuéi kþ tü th nh ng y gií

strptime("02/27/92 23:03:20", format="%m/%d/%y %H:%M:%S")


[1] "1992-02-27 23:03:20 +07"
Xû lþ thíi gian

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 12/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

earlier <- strptime("2000-01-01 00:00:00","%Y-%m-%d %H:%M:%S")


later <- strptime("2000-01-01 00:00:20","%Y-%m-%d %H:%M:%S")
later - earlier
Output
Time difference of 20 secs

4 Trüc quan dú li»u


4.1 ggplot2
Chóng ta s³ trüc quan dú li»u b¬ng gâi ggplot2
library(ggplot2)
ggplot2 l  mët cæng cö câ h» thèng, nh§t qu¡n v  hi»u qu£ v· thíi gian m  b¤n câ thº sû döng º t¤o
trüc quan hâa ch§t l÷ñng cao.
B¤n b­t ¦u vîi dú li»u cõa m¼nh v  sau â b¤n ch¿ ành h¼nh håc cho c¡c th nh ph¦n cõa dú li»u
â, ch¯ng h¤n dòng váng trán thº hi»n cho d¥n sè, sau â v³ nhúng h¼nh håc â düa tr¶n t l» dú li»u
cõa b¤n.

ˆ T¤o mët biºu ç v  ành ngh¾a c¡c bi¸n c¦n ¡nh x¤ ¸n ¸n ç thà

 ggplot(data = data_frame, aes(x = variable_1, y = variable_2))

ˆ G­n ÷íng th¯ng º ç thà

 ggplot(data = data_frame, aes(x = variable_1, y = variable_2)) + geom_line()

ˆ G­n tüa · biºu ç v  nh¢n c¡c tröc

 ggplot(data = data_frame, aes(x = variable_1, y = variable_2)) + geom_line() + labs(title


= "Title of Graph", x = "new x label", y = "new y label")

ˆ Thay çi m u n·n

 ggplot(data = data_frame, aes(x = variable_1, y = variable_2)) + geom_line() + labs(title


= "Title of Graph", x = "new x label", y = "new y label") +theme(panel.background =
element_rect(fill = "background color")

Mët sè ç thà:

ˆ geom_point()

ˆ geom_line()

ˆ geom_bar()

ˆ geom_boxplot()

ˆ geom_histogram()

ˆ geom_density()

heights %>%
filter(sex == "Female") %>%
ggplot(aes(height)) +
geom_histogram(binwidth = 1, fill = "blue", col = "black") +
xlab("Male heights in inches") +
ggtitle("Histogram")

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 13/14
Tr÷íng ¤i Håc B¡ch Khoa Tp.Hç Ch½ Minh
Khoa Khoa Håc & Kÿ Thuªt M¡y T½nh

T i li»u
[Dal] Dalgaard, P. Introductory Statistics with R. Springer 2008.

[K-Z] Kenett, R. S. and Zacks, S. Modern Industrial Statistics: with applications in R, MINITAB and
JMP, 2nd ed., John Wiley and Sons, 2014.

[Ker] Kerns, G. J. Introduction to Probability and Statistics Using R, 2nd ed., CRC 2015.

· b i tªp lîn mæn C§u tróc Ríi r¤c cho KHMT (CO1007) - Ni¶n khâa 2019-2020 Trang 14/14

You might also like