Как повторить эту функцию в R много раз? - PullRequest
0 голосов
/ 12 марта 2019

Мне нужно повторить следующую функцию много раз, используя разные элементы.Я очень плохо знаком с R, и единственный способ, которым я знаю, как с копировать-вставить.Мне нужно рассчитать долю, которую каждая программа представляет в своей области, исключая «нерешенные» области.И мне нужны пропорции каждой области, хранящиеся в отдельном списке или векторе для дальнейших расчетов.

df2 = data.frame (area=rep(c("Eng", "Hum"),each=3), program=c("Chem", "Mech", "Undecided","Hist", "Law", "Undecided"))
df2
  area   program
1  Eng      Chem
2  Eng      Mech
3  Eng Undecided
4  Hum      Hist
5  Hum       Law
6  Hum Undecided
p.Mech = sum(program=="Mech" & area=="Eng") / (sum(area=="Eng")- sum(program=="Undecided" & area=="Eng"))
p.Chem = sum(program=="Chem" & area=="Eng") / (sum(area=="Eng")- sum(program=="Undecided" & area=="Eng"))
p.Hist = sum(program=="Hist" & area=="Hum") / (sum(area=="Hum")- sum(program=="Undecided" & area=="Hum"))
p.law = sum(program=="Law" & area=="Hum") / (sum(area=="Hum")- sum(program=="Undecided" & area=="Hum"))

В моих реальных данных у меня есть 9 областей и около 5 программ для каждой области.Это моя первая публикация на stack.exchange, так что извините, если вопрос слишком тупой или не относится к этому вопросу.Надеюсь, что кто-нибудь может помочь.

1 Ответ

0 голосов
/ 12 марта 2019

Я бы, наверное, просто сделал следующее. Удалите неопределенные записи, подсчитайте результаты по программам и областям и рассчитайте пропорции по областям.

df2= data.frame (area=rep(c("Eng", "Hum"),each=3), program=c("Chem", "Mech", "Undecided","Hist", "Law", "Undecided"))

library(data.table)
library(magrittr)
dt2 <- as.data.table(df2)  # just converting to a data.table
dt2 %>%
  .[program != "Undecided"] %>%
  .[, .N, keyby = .(area, program)] %>%
  .[, P := N / sum(N), keyby = "area"] %>%
  .[]  # just for displaying
#>    area program N   P
#> 1:  Eng    Chem 1 0.5
#> 2:  Eng    Mech 1 0.5
#> 3:  Hum    Hist 1 0.5
#> 4:  Hum     Law 1 0.5

Создано в 2019-03-12 пакетом представ. (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...