Funktion schreiben

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
Hanibal
Beiträge: 11
Registriert: Di Dez 29, 2020 1:05 pm

Funktion schreiben

Beitrag 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
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Funktion schreiben

Beitrag 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")

Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten