Я пытаюсь получить значения группировки процентов по одной переменной.
Для этого я использовал sapply
, чтобы получить процент каждого столбца относительно другой переменной, но я не знаю, как сгруппировать эти значения по типу (другая переменная)
x <- data.frame("A" = c(0,0,1,1,1,1,1), "B" = c(0,1,0,1,0,1,1), "C" = c(1,0,1,1,0,0,1),
"type" = c("x","x","x","y","y","y","x"), "yes" = c(0,0,1,1,0,1,1))
x
A B C type yes
1 0 0 1 x 0
2 0 1 0 x 0
3 1 0 1 x 1
4 1 1 1 y 1
5 1 0 0 y 0
6 1 1 0 y 1
7 1 1 1 x 1
Мне нужно получить следующее значение (в процентах): A == 1 & yes == 1 / A == 1, и для этого я использую следующий код:
result <- as.data.frame(sapply(x[,1:3],
function(i) (sum(i & x$yes)/sum(i))*100))
result
sapply(x[, 1:3], function(i) (sum(i & x$yes)/sum(i)) * 100)
A 80
B 75
C 75
Теперь мне нужно получить ту же математическую операцию, но с учетом переменной «type». Это значит, получать тот же процент, но различать его по типу. Итак, моя ожидаемая таблица была:
type sapply(x[, 1:3], function(i) (sum(i & x$yes)/sum(i)) * 100)
A x 40
A y 40
B x 25
B y 50
C x 50
C y 25
В этом примере можно заметить, что по буквам, процентная сумма - это то же значение, что и полученный в первом результате, только здесь различается по типу. Большое спасибо.