Переработка данных в R: Пособие для начинающих

Здравствуйте, будущие программисты R! Сегодня мы отправимся в увлекательное путешествие в мир переработки данных в R. Не волнуйтесь, если вы никогда не программировали раньше — я буду вашим доброжелательным проводником, и мы будем двигаться шаг за шагом. К концу этого руководства вы будете перерабатывать данные, как профессионал!

R - Data Reshaping

Что такое переработка данных?

Прежде чем мы углубимся, давайте поговорим о том, что такое переработка данных. Представьте, что у вас есть куча кирпичиков Lego. Переработка данных — это как перестраивание этих кирпичиков, чтобы создать разные структуры. В R мы делаем то же самое с нашими данными — реорганизуем их, чтобы сделать их более полезными для анализа.

Теперь давайте перейдем к практическим примерам!

Объединение столбцов и строк в фрейме данных

Добавление столбцов

Давайте начнем с чего-то простого. Представьте, что у вас есть фрейм данных с информацией о фруктах:

fruits <- data.frame(
  name = c("Apple", "Banana", "Cherry"),
  color = c("Red", "Yellow", "Red")
)
print(fruits)

Это выведет:

    name  color
1  Apple    Red
2 Banana Yellow
3 Cherry    Red

Теперь давайте добавим новый столбец для цены каждого фрукта:

fruits$price <- c(0.5, 0.3, 0.7)
print(fruits)

И voila! Мы добавили новый столбец:

    name  color price
1  Apple    Red   0.5
2 Banana Yellow   0.3
3 Cherry    Red   0.7

Добавление строк

Что, если мы хотим добавить новый фрукт в наш список? Мы можем сделать и это!

new_fruit <- data.frame(name = "Date", color = "Brown", price = 0.6)
fruits <- rbind(fruits, new_fruit)
print(fruits)

Это даст нам:

    name  color price
1  Apple    Red   0.5
2 Banana Yellow   0.3
3 Cherry    Red   0.7
4   Date  Brown   0.6

Объединение фреймов данных

Теперь представим, что у нас есть другой фрейм данных с питательной информацией:

nutrition <- data.frame(
  name = c("Apple", "Banana", "Cherry", "Date"),
  calories = c(52, 89, 50, 282)
)

# Объединяем два фрейма данных
fruit_info <- merge(fruits, nutrition, by = "name")
print(fruit_info)

Это даст нам:

    name  color price calories
1  Apple    Red   0.5       52
2 Banana Yellow   0.3       89
3 Cherry    Red   0.7       50
4   Date  Brown   0.6      282

Не правда ли, здорово? Мы объединили информацию из двух разных источников в один comprehensive фрейм данных!

Topление и отливание

Теперь давайте перейдем к более продвинутым техникам переработки данных. Мы будем использовать пакет reshape2, поэтому убедитесь, что вы установили и загрузили его:

install.packages("reshape2")
library(reshape2)

Topление данных

Topление данных похоже на топление блока льда — все становится жидким и может быть重塑овано. Давайте топим наши данные fruit_info:

melted_fruits <- melt(fruit_info, id.vars = "name")
print(melted_fruits)

Это даст нам:

     name variable  value
1   Apple    color    Red
2  Banana    color Yellow
3  Cherry    color    Red
4    Date    color  Brown
5   Apple    price   0.50
6  Banana    price   0.30
7  Cherry    price   0.70
8    Date    price   0.60
9   Apple calories  52.00
10 Banana calories  89.00
11 Cherry calories  50.00
12   Date calories 282.00

Видите, как каждый атрибут (цвет, цена, калории) стал отдельной строкой? Это incredibly полезно для某些 типов анализа и визуализации.

Отливание разогретых данных

Теперь, когда мы обсушили наши данные, мы можем отлить их в новую форму. Давайте представим, что хотим, чтобы фрукты были столбцами, а атрибуты — строками:

casted_fruits <- dcast(melted_fruits, variable ~ name)
print(casted_fruits)

Это даст нам:

  variable Apple Banana Cherry  Date
1    color   Red Yellow    Red Brown
2    price  0.50   0.30   0.70  0.60
3 calories 52.00  89.00  50.00 282.00

Импонирует, не правда ли? Мы полностью преобразовали структуру наших данных!

Заключение

Поздравляю! Вы только что сделали свои первые шаги в мир переработки данных в R. Помните, как при строительстве с Lego, ключевым моментом является экспериментирование и нахождение структуры, которая лучше всего подходит для ваших потребностей. Не бойтесь играть с этими функциями — это как раз то, как вы действительно научитесь!

Вот quick reference таблица методов, которые мы рассмотрели:

Метод Функция Цель
Добавление столбцов $ или cbind() Добавление новых переменных в фрейм данных
Добавление строк rbind() Добавление новых наблюдений в фрейм данных
Объединение merge() Объединение данных из разных фреймов данных
Topление melt() Преобразование широких данных в длинный формат
Отливание dcast() Преобразование длинных данных в широкий формат

Продолжайте практиковаться, и скоро вы будете перерабатывать данные, как大师 скульптор! Счастливого кодирования!

Credits: Image by storyset