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

Что такое переработка данных?
Прежде чем мы углубимся, давайте поговорим о том, что такое переработка данных. Представьте, что у вас есть куча кирпичиков 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
