- Детаљи
- Последње ажурирање: 10. јуна 2021
Увод у анализу података
Анализа података може се поделити на три дела
- Екстракција: Прво, морамо прикупити податке из многих извора и комбиновати их.
- Трансформација: Овај корак укључује манипулацију подацима. Када објединимо све изворе података, можемо почети са чишћењем података.
- Визуализујте: Последњи потез је визуализација наших података ради провере неправилности.
Један од најзначајнијих изазова са којима се суочава научник података је манипулација подацима. Подаци никада нису доступни у жељеном формату. Научник података треба да потроши најмање половину свог времена на чишћење и руковање подацима. То је један од најкритичнијих задатака у послу. Ако процес манипулације подацима није потпун, прецизан и ригорозан, модел неће радити исправно.
Р има библиотеку под називом дплир која помаже у трансформацији података.
Библиотека дплир је фундаментално створена око четири функције за манипулацију подацима и пет глагола за чишћење података. Након тога, можемо користити библиотеку ггплот за анализу и визуализацију података.
У овом водичу ћемо научити како користити дплир библиотеку за манипулацију оквиром података.
У овом водичу ћете научити
- Анализа података
- Споји са дплир ()
- лефт_јоин ()
- ригхт_јоин ()
- иннер_јоин ()
- фулл_јоин ()
- Више тастера
- Функције чишћења података
- скупити()
- ширење()
- одвојен()
- унитед ()
Споји са дплир ()
дплир пружа леп и згодан начин за комбиновање скупова података. Можда имамо много извора улазних података и у једном тренутку их морамо комбинирати. Спајање са дплир додаје променљиве десно од оригиналног скупа података. Предност дплира је у томе што обрађује четири врсте спајања сличних СКЛ -у
- Лефт_јоин ()
- ригхт_јоин ()
- иннер_јоин ()
- фулл_јоин ()
Проучићемо све врсте спојева на једноставном примеру.
Пре свега, правимо два скупа података. Табела 1 садржи две променљиве, ИД и и, док Табела 2 окупља ИД и з. У свакој ситуацији морамо имати а пар кључева променљива. У нашем случају, лична карта је наша кључ променљива. Функција ће тражити идентичне вредности у обе табеле и везати враћене вредности десно од табеле 1.
library(dplyr) df_primary <- tribble( ~ID, ~y, 'A', 5, 'B', 5, 'C', 8, 'D', 0, 'F', 9) df_secondary <- tribble( ~ID, ~y, 'A', 30, 'B', 21, 'C', 22, 'D', 25, 'E', 29)
лефт_јоин ()
Најчешћи начин спајања два скупа података је употреба функције лефт_јоин (). Са доње слике можемо видети да се пар кључева савршено подудара са редовима А, Б, Ц и Д из оба скупа података. Међутим, Е и Ф су остали. Како третирамо ова два запажања? Са лефт_јоин (), задржаћемо све променљиве у оригиналној табели и нећемо узети у обзир варијабле које немају упарене кључеве у одредишној табели. У нашем примеру, променљива Е не постоји у табели 1. Због тога ће ред бити испуштен. Променљива Ф долази из исходишне табеле; задржаће се после лефт_јоин () и вратити НА у колону з. Доња слика репродукује шта ће се десити са лефт_јоин ().
left_join(df_primary, df_secondary, by ='ID')
Излаз:
## # A tibble: 5 x 3 ## ID y.x y.y ## ## 1 A 5 30 ## 2 B 5 21 ## 3 C 8 22 ## 4 D 0 25 ## 5 F 9 NA
ригхт_јоин ()
Функција ригхт_јоин () ради исто као лефт_јоин (). Једина разлика је што је ред испуштен. Вредност Е, доступна у одредишном оквиру података, постоји у новој табели и узима вредност НА за колону и.
right_join(df_primary, df_secondary, by = 'ID')
Излаз:
## # A tibble: 5 x 3 ## ID y.x y.y ## ## 1 A 5 30 ## 2 B 5 21 ## 3 C 8 22 ## 4 D 0 25 ## 5 E NA 29
иннер_јоин ()
Када смо 100% сигурни да се два скупа података неће подударати, можемо размислити о враћању само редови који постоје у обоје скуп података. То је могуће када нам је потребан чист скуп података или када не желимо импутирати недостајуће вредности средњом или средњом вредности.
Иннер_јоин () долази у помоћ. Ова функција искључује неподударне редове.
inner_join(df_primary, df_secondary, by ='ID')
излаз:
## # A tibble: 4 x 3 ## ID y.x y.y ## ## 1 A 5 30 ## 2 B 5 21 ## 3 C 8 22 ## 4 D 0 25
фулл_јоин ()
Коначно, функција фулл_јоин () чува сва запажања и замењује недостајуће вредности са НА.
full_join(df_primary, df_secondary, by = 'ID')
Излаз:
## # A tibble: 6 x 3 ## ID y.x y.y ## ## 1 A 5 30 ## 2 B 5 21 ## 3 C 8 22 ## 4 D 0 25 ## 5 F 9 NA ## 6 E NA 29
Више парова кључева
На крају, али не и најмање важно, можемо имати више кључева у нашем скупу података. Узмите у обзир следећи скуп података где имамо године или списак производа које је купио купац.
Ако покушамо да спојимо обе табеле, Р приказује грешку. Да бисмо поправили ситуацију, можемо проследити две променљиве парова кључева. То јест, ИД и година који се појављују у оба скупа података. Можемо користити следећи код за спајање табле1 и табле 2 | _+_ |
Излаз:
df_primary <- tribble( ~ID, ~year, ~items, 'A', 2015,3, 'A', 2016,7, 'A', 2017,6, 'B', 2015,4, 'B', 2016,8, 'B', 2017,7, 'C', 2015,4, 'C', 2016,6, 'C', 2017,6) df_secondary <- tribble( ~ID, ~year, ~prices, 'A', 2015,9, 'A', 2016,8, 'A', 2017,12, 'B', 2015,13, 'B', 2016,14, 'B', 2017,6, 'C', 2015,15, 'C', 2016,15, 'C', 2017,13) left_join(df_primary, df_secondary, by = c('ID', 'year'))
Функције чишћења података
Четири су важне функције за сређивање података:
- цоллецт (): Претворите податке из широког у дуго
- спреад (): Претворите податке из дугачког у широко
- сепаре (): Поделите једну променљиву на две
- унит (): Јединице две променљиве у једну
Користимо библиотеку тидир. Ова библиотека припада збирци библиотеке за манипулацију, чишћење и визуализацију података. Ако инсталирамо Р са анакондом, библиотека је већ инсталирана. Библиотеку можемо пронаћи овде, хттпс://анацонда.орг/р/р-тидир .
Ако већ нисте инсталирали, унесите следећу команду
инсталл тидир: инсталл.пацкагес ('тидир')
да инсталирате тидир
скупити()
Циљеви функције цоллецт () су претварање података из широког у дуго. | _+_ |
У наставку можемо замислити концепт преобликовања од широког до дугог. Желимо да створимо једну колону под називом раст, испуњену редовима променљивих квартала.
## # A tibble: 9 x 4 ## ID year items prices ## ## 1 A 2015 3 9 ## 2 A 2016 7 8 ## 3 A 2017 6 12 ## 4 B 2015 4 13 ## 5 B 2016 8 14 ## 6 B 2017 7 6 ## 7 C 2015 4 15 ## 8 C 2016 6 15 ## 9 C 2017 6 13
Излаз:
gather(data, key, value, na.rm = FALSE) Arguments: -data: The data frame used to reshape the dataset -key: Name of the new column created -value: Select the columns used to fill the key column -na.rm: Remove missing values. FALSE by default
library(tidyr) # Create a messy dataset messy <- data.frame( country = c('A', 'B', 'C'), q1_2017 = c(0.03, 0.05, 0.01), q2_2017 = c(0.05, 0.07, 0.02), q3_2017 = c(0.04, 0.05, 0.01), q4_2017 = c(0.03, 0.02, 0.04)) messy
Излаз:
## country q1_2017 q2_2017 q3_2017 q4_2017 ## 1 A 0.03 0.05 0.04 0.03 ## 2 B 0.05 0.07 0.05 0.02 ## 3 C 0.01 0.02 0.01 0.04
У функцији цоллецт () креирамо две нове променљиве квартал и раст јер наш оригинални скуп података има једну променљиву групе: тј. Земљу и парове кључ-вредност.
ширење()
Функција спреад () чини супротно од прикупљања. | _+_ |
Уреднији скуп података можемо преуредити у неуредан помоћу спреад () | _+_ |
Излаз:
# Reshape the data tidier % gather(quarter, growth, q1_2017:q4_2017) tidier
одвојен()
Одвојена () функција дели колону на два према сепаратору. Ова функција је корисна у неким ситуацијама када је променљива датум. Наша анализа може захтевати усредсређивање на месец и годину и желимо да одвојимо колону на две нове променљиве.
Синтакса :
## country quarter growth ## 1 A q1_2017 0.03 ## 2 B q1_2017 0.05 ## 3 C q1_2017 0.01 ## 4 A q2_2017 0.05 ## 5 B q2_2017 0.07 ## 6 C q2_2017 0.02 ## 7 A q3_2017 0.04 ## 8 B q3_2017 0.05 ## 9 C q3_2017 0.01 ## 10 A q4_2017 0.03 ## 11 B q4_2017 0.02 ## 12 C q4_2017 0.04
Можемо одвојити квартал од године у уреднијем скупу података применом функције сепарате (). | _+_ |
Излаз:
spread(data, key, value) arguments:
- data: The data frame used to reshape the dataset
- key: Column to reshape long to wide
- value: Rows used to fill the new column
унитед ()
Функција уните () повезује две колоне у једну.
Синтакса: | _+_ |
У горњем примеру смо одвојили квартал од године. Шта ако желимо да их спојимо. Користимо следећи код: | _+_ |
излаз:
# Reshape the data messy_1 % spread(quarter, growth) messy_1
Резиме
Следе четири важне функције које се користе у дплир -у за спајање два скупа података.
Функција | Циљеви | Аргументс | Више тастера |
---|---|---|---|
лефт_јоин () | Спојите два скупа података. Задржите сва запажања из табеле порекла | подаци, порекло, одредиште, по = 'ИД' | порекло, одредиште, по = ц ('ИД', 'ИД2') |
ригхт_јоин () | Спојите два скупа података. Задржите сва запажања из табеле одредишта | подаци, порекло, одредиште, по = 'ИД' | порекло, одредиште, по = ц ('ИД', 'ИД2') |
иннер_јоин () | Спојите два скупа података. Искључује све редове без пара | подаци, порекло, одредиште, по = 'ИД' | порекло, одредиште, по = ц ('ИД', 'ИД2') |
фулл_јоин () | Спојите два скупа података. Задржава сва запажања | подаци, порекло, одредиште, по = 'ИД' | порекло, одредиште, по = ц ('ИД', 'ИД2') |
Коришћењем библиотеке тидир можете трансформисати скуп података помоћу функција цоллецт (), спреад (), сепарате () и унит ().
Функција | Циљеви | Аргументс |
---|---|---|
скупити() | Претворите податке из широких у дугачке | (подаци, кључ, вредност, на.рм = ФАЛСЕ) |
ширење() | Претворите податке из дугачких у широке | (подаци, кључ, вредност) |
одвојен() | Поделите једну променљиву на две | (подаци, цол, инто, сеп = '', ремове = ТРУЕ) |
јединица() | Уједините две променљиве у једну | (подаци, цол, цонц, сеп = '', ремове = ТРУЕ) |