Переработка данных в 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