Р Дплир Водич: Манипулација подацима (придруживање) и чишћење (ширење)

Увод у анализу података

Анализа података може се поделити на три дела

  • Екстракција: Прво, морамо прикупити податке из многих извора и комбиновати их.
  • Трансформација: Овај корак укључује манипулацију подацима. Када објединимо све изворе података, можемо почети са чишћењем података.
  • Визуализујте: Последњи потез је визуализација наших података ради провере неправилности.

Један од најзначајнијих изазова са којима се суочава научник података је манипулација подацима. Подаци никада нису доступни у жељеном формату. Научник података треба да потроши најмање половину свог времена на чишћење и руковање подацима. То је један од најкритичнијих задатака у послу. Ако процес манипулације подацима није потпун, прецизан и ригорозан, модел неће радити исправно.

Р има библиотеку под називом дплир која помаже у трансформацији података.

Библиотека дплир је фундаментално створена око четири функције за манипулацију подацима и пет глагола за чишћење података. Након тога, можемо користити библиотеку ггплот за анализу и визуализацију података.

У овом водичу ћемо научити како користити дплир библиотеку за манипулацију оквиром података.

У овом водичу ћете научити

Споји са дплир ()

дплир пружа леп и згодан начин за комбиновање скупова података. Можда имамо много извора улазних података и у једном тренутку их морамо комбинирати. Спајање са дплир додаје променљиве десно од оригиналног скупа података. Предност дплира је у томе што обрађује четири врсте спајања сличних СКЛ -у

  • Лефт_јоин ()
  • ригхт_јоин ()
  • иннер_јоин ()
  • фулл_јоин ()

Проучићемо све врсте спојева на једноставном примеру.

Пре свега, правимо два скупа података. Табела 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')

Коришћењем библиотеке тидир можете трансформисати скуп података помоћу функција цоллецт (), спреад (), сепарате () и унит ().

Функција

Циљеви

Аргументс

скупити()

Претворите податке из широких у дугачке

(подаци, кључ, вредност, на.рм = ФАЛСЕ)

ширење()

Претворите податке из дугачких у широке

(подаци, кључ, вредност)

одвојен()

Поделите једну променљиву на две

(подаци, цол, инто, сеп = '', ремове = ТРУЕ)

јединица()

Уједините две променљиве у једну

(подаци, цол, цонц, сеп = '', ремове = ТРУЕ)