#r #dplyr
#r #dplyr
Вопрос:
Я хочу выполнить несколько вычислений summarise
, используя фрейм данных, используя group by. Входные данные:
dat <- data.frame (ID = c(1:10),
var1 = as.factor(c("A","B","A","A","B","B","B","C","A","B")),
Var2 = as.factor(c("low","medium","low","low","medium","high","high","high","high","high")))
Теперь я хочу выполнить group by для var1, подсчитать идентификаторы и вычислить пропорцию, где var2 = high . Мой вывод должен выглядеть следующим образом:
var1 total prop_high
1 A 4 0.25
2 B 5 0.60
3 C 1 1.00
До сих пор я получил следующий код, но я застрял на вычислении пропорции
dat2 <- dat %>%
group_by(var1) %>%
summarise(total = n(),
prop_high = )
Ответ №1:
Вы можете взять mean
логические значения, чтобы получить пропорцию.
library(dplyr)
dat %>%
group_by(var1) %>%
summarise(total = n(),
prop_high = mean(Var2 == 'high'))
#Same as
#prop_high = sum(Var2 == 'high')/n())
# var1 total prop_high
# <fct> <int> <dbl>
#1 A 4 0.25
#2 B 5 0.6
#3 C 1 1
Комментарии:
1. Это фантастика. Я всегда думал, что агрегатные функции невозможны для факторов, но я никогда не рассматривал возможность их использования в качестве логических значений. Большое спасибо!