Nombres de variables dinámicas en svydesign del paquete survey
Quiero agregar columnas a un diseño de encuesta creado con el paquete “survey”, lo cual se puede hacer de la siguiente manera:
library(survey)
data(api)
dclus1 <- svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc)
dclus2 <- transform(dclus1,
api00_b = api00 + 1)
svymean(~ api00, design = dclus2)
mean SE
api00 644.17 23.542
svymean(~ api00_b, design = dclus2)
mean SE
api00_b 645.17 23.542
Para una tarea más compleja, necesito crear estos nombres de variables dinámicamente a partir de vectores externos. Lo siguiente produce un error, pero creo que proporciona una ilustración de lo que quiero lograr:
```r
vars <- c("api00_a", "api00_b")
dclus2 <- transform(dclus1,
vars[[2]] = api00 + 1)
¿Cómo se podrían implementar nombres dinámicos para las nuevas columnas?
davy.ai
Para generar dinámicamente nombres de columna para el objeto survey.design, puedes usar la función
paste()
para concatenar cadenas. Aquí hay un ejemplo utilizando el vectorvars
de la pregunta:El código anterior crea dos nuevas columnas para cada elemento en el vector
vars
, con el sufijo_new
añadido al nombre de columna original. Las funcioneslapply()
ysetNames()
se utilizan para crear una lista de estos data frames transformados, donde cada elemento en la lista se nombra según su correspondiente nombre de columna. Finalmente,do.call()
se utiliza para combinar la lista de data frames transformados en un objeto survey.design, que luego se puede utilizar para el análisis.