Seite 1 von 1

Funktion schreiben

Verfasst: Mo Jan 10, 2022 12:14 pm
von Hanibal
Hallo ich muss diesen Befehl mehrmals wiederholen, ändern sollte sich nur die Variable by = ____(hier activity) und im Namen (tab_amount_event_activity).
Hab einen Vektor mit all den Variabelnamen, die ich einfügen möchte, sagen wir diesem Vektor: variable_names

Kann mir dabei jemand helfen eine Funktion zu schreiben um das zu automatisieren. Danke vielmals.

Code: Alles auswählen

tab_amount_event_activity <- svyby(formula = ~I(fall=="two_events_or_more"),
  by = ~ activity,
  design = dat,
  FUN = svyciprop,
  na.rm = TRUE,
  keep.names = FALSE,
  vartype="ci",
  method = "likelihood"
)
tab_amount_event_activity

Code: Alles auswählen

##           activity I(fall == "two_events_or_more")       ci_l       ci_u
## 1         inactive                                     0.11904215 0.07862579 0.16939196
## 2 partially active                                     0.10760068 0.07485947 0.14750246
## 3           active                                     0.08323474 0.07022980 0.09760121

Re: Funktion schreiben

Verfasst: Mo Jan 10, 2022 9:51 pm
von EDi
Anbei ein Beispiel.

Da ein reproduzierbares Beispiel fehlt und ich keinen Schimmer vom survey Paket habe, sollte das mit vorsicht genossen werden...

Code: Alles auswählen

library(survey)
data(api)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)


svyby(formula = ~api99, by = ~stype, design = dclus1, FUN = svymean)
svyby(formula = ~api99, by = ~yr.rnd, design = dclus1, FUN = svymean)

myfunction <- function(design, by) {
  stopifnot(!missing(design))
  stopifnot(!missing(by))
  stopifnot(length(by) == 1)
  stopifnot(by %in% names(design$variables))
  
  bylist <- list(design$variables[[by]])
  names(bylist) <- by
    
  svyby(formula = ~api99, by = bylist, design = design, FUN = svymean)
}

myfunction(design, "stype")
myfunction(design, "yr.rnd")
myfunction(design, "xxxx")