Относительно взвешенные частоты / пропорции в dplyr - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь получить dplyr способ составить относительную таблицу или пропорции, в которых взвешиваются данные. Я читал в теме об относительных частотах / пропорциях в dplyr, и один из ответов был в data.table

library("data.table")
cars_dt <- as.data.table(mtcars)
cars_dt[, .(n = .N), keyby = .(am, gear)][, freq := prop.table(n) , by = "am"]

. Я понял, как взвесить этот подход, заменив sum(weight) на .N. Я не могу понять, как включить вес в подходы dplyr, которые были представлены в других потоках.

1 Ответ

0 голосов
/ 01 февраля 2020

сотрудник дал мне ответ

library(survey)
# load data
data(api)

x <- apistrat

## data.tab
x <- data.table::data.table(x)

#unweighted proportion of share of schools meeting target by being year round
x[ , .(p = .N) , keyby = .(comp.imp, yr.rnd)][ , .(comp.imp, per = p/sum(p)) , by = yr.rnd ]
   yr.rnd comp.imp       per
1:     No       No 0.4413408
2:     No      Yes 0.5586592
3:    Yes       No 0.2380952
4:    Yes      Yes 0.7619048
# weighted (weight is pw)
x[ , .(p = sum(pw)) , keyby = .(comp.imp, yr.rnd)][ , .(comp.imp, per = p/sum(p)) , by = yr.rnd ]
   yr.rnd comp.imp       per
1:     No       No 0.3677785
2:     No      Yes 0.6322215
3:    Yes       No 0.1973814
4:    Yes      Yes 0.8026186

## dplyr

x %>% group_by(yr.rnd) %>% count(comp.imp , wt = pw) %>% mutate(per = n/sum(n))
# A tibble: 4 x 4
# Groups:   yr.rnd [2]
  yr.rnd comp.imp     n   per
  <fct>  <fct>    <dbl> <dbl>
1 No     No       1965. 0.368
2 No     Yes      3378. 0.632
3 Yes    No        168. 0.197
4 Yes    Yes       684. 0.803
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...