#r
#r
Вопрос:
Я пытаюсь создать сводные таблицы на основе суммы или среднего значения значений других столбцов, а не по количеству.
Amount Age ActualResult Prediction
100 20 Pass Pass
200 24 Pass Pass
300 30 Pass Fail
400 34 Pass Fail
500 40 Fail Pass
600 44 Fail Pass
700 50 Fail Fail
800 54 Fail Fail
Я могу получить таблицу по количеству, используя следующий код:
table(data$ActualResult,data$Prediction)
Predict Pass Predict Fail
Actual Pass 2 2
Actual Fail 2 2
Но я не знаю, как получить таблицу по сумме суммы или среднего возраста:
По сумме:
Predict Pass Predict Fail
Actual Pass 300 700
Actual Fail 1100 1500
По среднему возрасту:
Predict Pass Predict Fail
Actual Pass 22 32
Actual Fail 42 52
Какой код я бы использовал для создания таблиц по количеству и среднему возрасту?
Ответ №1:
Это можно сделать с questionr
помощью пакета
questionr::wtd.table(
data$ActualResult,
data$Prediction,
weights = data$Amount
)
#> Fail Pass
#> Fail 1500 1100
#> Pass 700 300
Чтобы получить средний возраст, разделите на исходную таблицу
questionr::wtd.table(
data$ActualResult,
data$Prediction,
weights = data$Age
) / table(data$ActualResult,data$Prediction)
#> Fail Pass
#> Fail 52 42
#> Pass 32 22
Ответ №2:
Вот tidyverse
способ, используя ваши данные как df
:
library(tidyverse)
# sum of Amount
sum_amount <-
df %>%
group_by(ActualResult, Prediction) %>%
summarize(sum = sum(Amount)) %>%
pivot_wider(names_from = "Prediction",
values_from = "sum",
names_prefix = "Predict")
# average Age
avg_age <-
df %>%
group_by(ActualResult, Prediction) %>%
summarize(avg = mean(Age)) %>%
pivot_wider(names_from = "Prediction",
values_from = "avg",
names_prefix = "Predict")