Р це мова програмування та програмне середовище, яке в основному використовується для статистичних обчислень і графіки. Він надає широкий спектр інструментів для обробки даних, аналізу даних, візуалізації даних і статистичного моделювання.
Об’єднання даних є завданням аналізу та обробки даних. У R існують різні способи об’єднання кадрів даних за допомогою 'merge()' функція з бази R, використовуючи «dplyr» пакет, і ‘data.table’ пакет. У цьому підручнику ми використаємо наведені вище три способи об’єднання даних за допомогою R.
1. Використання «merge()» з базового R:
Функція merge() у base R допомагає нам об’єднати два або більше кадрів даних на основі загальних стовпців. Він виконує різні типи з’єднань, наприклад внутрішнє з’єднання, з’єднання зліва, з’єднання справа та повне з’єднання.
Синтаксис:
merged_df <- merge(x,y,by = 'common_column',..)>
- «х» і 'та' це кадри даних, які потрібно об’єднати.
- 'від' вказує загальні стовпці, на яких буде виконано злиття.
- Додаткові аргументи, як 'all.x' , всі і 'все' контролювати тип об'єднання, яке має бути виконано.
приклад:
Розглянемо два кадри даних «df1» і «df2»
Р
df1 <->data.frame>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(25, 30, 35, 40))> df2 <->data.frame>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(5000, 4000, 6000, 7000))> |
>
>
Давайте подивимося приклади виконання різних типів об’єднань за допомогою функції «merge()»:
1. Внутрішнє приєднання (поведінка за замовчуванням):
Р
inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
>
Вихід:
ID Name Age Occupation Salary 1 2 B 30 Engineer 5000 2 3 C 35 Teacher 4000 3 4 D 40 Doctor 6000>
Отриманий фрейм даних inner_join включатиме лише загальні рядки where «ID» присутній в як «df1», так і «df2».
2. Ліве приєднання( «all.x=TRUE» ):
Р
left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)> |
>
підручник з javascript
>
Вихід:
ID Name Age Occupation Salary 1 1 A 25 NA 2 2 B 30 Engineer 5000 3 3 C 35 Teacher 4000 4 4 D 40 Doctor 6000>
Отриманий кадр даних «left_join» включатиме всі рядки з 'df1' і відповідні рядки з «df2». Невідповідні рядки з «df2» матимуть значення «NA».
3. Приєднатися праворуч ( 'all.y=TRUE' ):
Р
процес android acore постійно зупиняється
right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)> |
>
>
Вихід:
ID Name Age Occupation Salary 1 2 B 30 Engineer 5000 2 3 C 35 Teacher 4000 3 4 D 40 Doctor 6000 4 5 NA Lawyer 7000>
Отриманий кадр даних «right_join» включатиме всі рядки з «df2» і відповідні рядки з «df1». Невідповідні рядки з «df1» матимуть значення «NA».
4. Повне зовнішнє приєднання ( «все = TRUE» )
Р
full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)> |
>
>
Вихід:
ID Name Age Occupation Salary 1 1 A 25 NA 2 2 B 30 Engineer 5000 3 3 C 35 Teacher 4000 4 4 D 40 Doctor 6000 5 5 NA Lawyer 7000>
Отриманий кадр даних full_join включатиме усі рядки з «df1» і «df2». Невідповідні значення матимуть значення «NA».
2. Використовуючи пакет dplyr:
Пакет «dplyr» надає набір функцій для маніпулювання даними, включаючи об’єднання кадрів даних.
Основною функцією об’єднання в «dplyr» є 'join()', який підтримує різні типи з'єднань.
Синтаксис:
merged_df<- join(x,y,by='common_column',type='type_of_join')>
- «х» і 'та' це кадри даних, які потрібно об’єднати.
- 'від' вказує загальні стовпці, для яких буде виконано злиття
- ‘type_of_join’ може бути «внутрішній», «лівий», «правий» або «повний», щоб визначити тип об’єднання.
приклад:
Встановіть dplyr() упакувати та створити два кадри даних, 'df1' і «df2».
Р
library>(dplyr)> df1 <->data.frame>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(20, 30, 40, 50))> df2 <->data.frame>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(2000, 4000, 6000, 7000))> |
>
>
Давайте подивимося приклади виконання різних типів об’єднань за допомогою функцій dplyr:
1. Внутрішнє з'єднання:
шаблони проектування java
Р
inner_join <->inner_join>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
>
Вихід:
ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000>
Отриманий кадр даних «inner_join» включатиме лише загальні рядки, де «ID» присутній як у «df1», так і в «df2».
2. Приєднання зліва:
Р
left_join <->left_join>(df1, df2, by =>'ID'>)> print>(left_join)> |
>
>
Вихід:
ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000>
Отриманий кадр даних «left_join» включатиме усі рядки з «df1» і відповідні рядки з «df2» . Невідповідні рядки з «df2» матимуть значення «NA».
3. Праве приєднання:
Р
right_join <->right_join>(df1, df2, by =>'ID'>)> print>(right_join)> |
>
>
Вихід:
ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000 4 5 NA Lawyer 7000>
Отриманий кадр даних 'right_join' включатиме усі рядки з «df2» і відповідні рядки з «df1». Невідповідні рядки «df1» матимуть значення «NA».
4. Повне зовнішнє приєднання:
Р
full_join <->full_join>(df1, df2, by =>'ID'>)> print>(full_join)> |
>
>
Вихід:
ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000 5 5 NA Lawyer 7000>
Отриманий кадр даних full_join включатиме усі рядки з «df1» і «df2» . Невідповідні рядки матимуть значення «NA».
3. Використання пакета data.table:
Пакет «data.table» пропонує ефективний і швидкий підхід до маніпулювання даними. Він забезпечує функцію «merge()». Він схожий на базовий R, але оптимізований для швидкості.
Синтаксис:
merged_dt <- merge(x, y, by = 'common_column', ...)>
- «х» і 'та' це кадри даних, які потрібно об’єднати.
- 'від' вказує загальні стовпці, на яких буде виконано злиття.
- Додаткові аргументи, як 'all.x', 'all.y' і 'все' який керує типом об'єднання.
приклад:
Встановіть бібліотеку data.table і створіть дві таблиці даних «dt1» і «dt2».
Р
формат рядка в java
library>(data.table)> dt1 <->data.table>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(25, 30, 35, 40))> dt2 <->data.table>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(5000, 4000, 6000, 7000))> |
>
>
Давайте розглянемо приклади виконання різних типів об’єднань за допомогою функції merge() з пакету data.table:
1. Внутрішнє приєднання (поведінка за замовчуванням):
Р
inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
>
Вихід:
ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000>
Отриманий кадр даних «inner_join» включатиме лише загальні рядки, де «ID» присутній як у «df1», так і в «df2».
2. Ліве з’єднання (‘all.x = TRUE’):
Р
left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)> |
>
>
Вихід:
ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000>
Отриманий кадр даних «left_join» включатиме все Невідповідність від «df1» і відповідні рядки з «df2». Невідповідні рядки з «df2» матимуть значення «NA».
3. Праве з’єднання (‘all.y = TRUE’):
Р
right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)> |
>
>
Вихід:
ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000 4 5 NA Lawyer 7000>
Отриманий кадр даних 'right_join' включатиме все Невідповідність рядки з «df2» і відповідні рядки з «df1». Невідповідні рядки з «df1» матимуть значення «NA».
3. Повне зовнішнє об'єднання ('все = TRUE'):
Р
порівняльний список
full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)> |
>
>
Вихід:
ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000 5 5 NA Lawyer 7000>
Отриманий кадр даних full_join включатиме все Невідповідність рядки з «df1» і «df2». Невідповідні рядки матимуть значення «NA».
Однією з переваг використання «dplyr» і «data.table» є те, що вони забезпечують більш стислий і читабельний синтаксис для маніпулювання даними порівняно з базовим R.
Резюме:
- ‘merge()’ надає функцію загального призначення для об’єднання кадрів даних.
- «dplyr» зосереджується на об’єднанні з акцентом на читабельності та простоті використання.
- «дані. таблиці» забезпечує швидкий і ефективний спосіб обробки великих наборів даних з оптимізованою продуктивністю.
- Вибирати підхід слід виходячи зі складності завдання та вимог до виконання.