Создайте сводную таблицу двух категориальных и числовых переменных
2
У меня есть следующий гипотетический фреймворк
Region <- c("District A", "District B","District A","District A","District B")
Gender <- c("Male","Male","Female", "Male","Female")
Age <- c(20, 21, 23, 34, 22)
AmountSold <- c(50, 10, 20, 4, 12)
RegionSales <- data.frame(Region, Gender, Age, AmountSold)
Я хотел бы создать сводную таблицу или таблицу, которая показывает как среднее количество проданных товаров по полу и регионам, так и среднее значение возраста по полу и регионам. Как мне это сделать в R?

3 ответа
3
Лучший ответ
Это был бы мой подход кdplyr
упаковка:
library(dplyr)
RegionSales %>%
group_by(Region, Gender) %>%
summarize(mean_age = mean(Age), mean_amount = mean(AmountSold))
Выход:
# A tibble: 4 x 4
# Groups: Region [2]
Region Gender mean_age mean_amount
<chr> <chr> <dbl> <dbl>
1 District A Female 23 20
2 District A Male 27 27
3 District B Female 22 12
4 District B Male 21 10
Вариант, который игнорируетNA
значения:
RegionSales %>%
group_by(Region, Gender) %>%
summarize(mean_age = mean(Age, na.rm = T),
mean_amount = mean(AmountSold, na.rm = T))
4
Сdplyr
, другой вариант - указать переменные вacross
library(dplyr)
RegionSales %>%
group_by(Region, Gender) %>%
summarise(across(c(Age, AmountSold),
~ mean(., na.rm = TRUE), .names = "mean_{.col}"))
3
Базовый вариант с использованиемaggregate
мог бы помочь
> aggregate(. ~ Region + Gender, RegionSales, mean)
Region Gender Age AmountSold
1 District A Female 23 20
2 District B Female 22 12
3 District A Male 27 27
4 District B Male 21 10

Цитата дня
"Завидую тестировщикам: все хотят с ними дружить."
Эндрю Таненбаум