X23 | X185 | X85.7 | Male |
---|---|---|---|
<int> | <chr> | <dbl> | <chr> |
41 | 175 | 68.3 | M |
11 | 142* | 55.4 | Female |
12 | NA | 48.2 | Man |
54 | 171 | NA | Looks like a man |
32 | 168 | 78.0 | F |
21 Робота з неіменованими та “поганоіменованими” даними
author: Юрій Клебан
21.1 Іменування даних
Першим прикладом проблем у даних можна розгянути читання неіменованих даних, тобто стопці таблиці не мають заголовків у файлі.
Створимо такий файл у блокноті і зчитаємо його:
Зверніть увагу, що у якості стовпців взято перший рядок даних у додано X
на початку. Зчитаємо дані із параметром, що вказує на відсутність заголовків:
V1 | V2 | V3 | V4 |
---|---|---|---|
<int> | <chr> | <dbl> | <chr> |
23 | 185 | 85.7 | Male |
41 | 175 | 68.3 | M |
11 | 142* | 55.4 | Female |
12 | NA | 48.2 | Man |
54 | 171 | NA | Looks like a man |
32 | 168 | 78.0 | F |
Проблема іменування не вирішена, дані ми уже не втратили. Передамо одночасно з читанням інформацію про назви стовпців:
data <- read.csv("data/untitled.csv",
header = FALSE,
col.names = c("Age","Height", "Weight", "Gender"))
data
Age | Height | Weight | Gender |
---|---|---|---|
<int> | <chr> | <dbl> | <chr> |
23 | 185 | 85.7 | Male |
41 | 175 | 68.3 | M |
11 | 142* | 55.4 | Female |
12 | NA | 48.2 | Man |
54 | 171 | NA | Looks like a man |
32 | 168 | 78.0 | F |
Ще одним варіантом задання назв стовпців є використання функції colnames()
як для усіх різом, так і для окремого:
age | height | width | gender |
---|---|---|---|
<int> | <chr> | <dbl> | <chr> |
23 | 185 | 85.7 | Male |
41 | 175 | 68.3 | M |
11 | 142* | 55.4 | Female |
12 | NA | 48.2 | Man |
54 | 171 | NA | Looks like a man |
32 | 168 | 78.0 | F |
age | HEIGHT | width | gender |
---|---|---|---|
<int> | <chr> | <dbl> | <chr> |
23 | 185 | 85.7 | Male |
41 | 175 | 68.3 | M |
11 | 142* | 55.4 | Female |
12 | NA | 48.2 | Man |
54 | 171 | NA | Looks like a man |
32 | 168 | 78.0 | F |
Також змінювати назви стовпців можна за допомогою функції rename()
з пакету dplyr
:
AGE | HEIGHT | width | gender |
---|---|---|---|
<int> | <chr> | <dbl> | <chr> |
23 | 185 | 85.7 | Male |
41 | 175 | 68.3 | M |
11 | 142* | 55.4 | Female |
12 | NA | 48.2 | Man |
54 | 171 | NA | Looks like a man |
32 | 168 | 78.0 | F |
21.2 Заміна назв стовпців data.frame
Зчитаємо файл, що містить інформацію про осіб, але уже має іменовані стовпці:
Person.Age | Person__Height | person.Weight | Person.Gender | empty |
---|---|---|---|---|
<int> | <chr> | <dbl> | <chr> | <lgl> |
23 | 185 | NA | Male | NA |
41 | 175 | 68.3 | M | NA |
11 | 142* | 55.4 | Female | NA |
12 | NA | 48.2 | Man | NA |
54 | 191 | NA | female | NA |
32 | 168 | 78.0 | F | NA |
22 | NA | 54.0 | male. | NA |
21 | 165 | NA | m | NA |
14 | NA | 90.2 | Man | NA |
51 | 250 | NA | female | NA |
41 | 20 | 81.0 | F | NA |
66 | NA | 59.0 | male. | NA |
71 | 171 | NA | m | NA |
Швидко змінити назви стовпців та привести їх до однакового стилю можна за домогою бібліотеки janitor
:
- 'person_age'
- 'person_height'
- 'person_weight'
- 'person_gender'
- 'empty'
21.3 Набори даних
- https://github.com/kleban/r-book-published/tree/main/datasets/untitled.csv
- https://github.com/kleban/r-book-published/tree/main/datasets/badtitled.csv
- https://github.com/kleban/r-book-published/tree/main/datasets/cleaned_titled.csv
- https://github.com/kleban/r-book-published/tree/main/datasets/cleaned_titled2.csv
- https://github.com/kleban/r-book-published/tree/main/datasets/river_eco.csv