Rolando Valdez
2019-Jun-04 03:42 UTC
[R-es] Incluir un rango de varias variables explicativas a un modelo
Hola, gracias por la respuesta, No me funcionó debido a que los nombres de las variables no están seriadas, es decir, los nombres de las variables son del tipo: x23 x25 x30, x301 x320, x80. Entonces me da este error: Error in eval(predvars, data, env) : object 'pot24' not found. Debido a que pot24 no existe, ya que de pot23 se brinca a pot30. En Stata es algo muy simple de hacer, solo tengo que especificar gl indepvars "x23-x80" y ya. En R no logro hacerlo. ¿Alguna otra sugerencia? Gracias de antemano. El lun., 3 de jun. de 2019 a la(s) 04:50, Carlos Ortega ( cof en qualityexcellence.es) escribió:> Hola, > > Mira la función "*as.formula()*". > Incluye un ejemplo muy parecido a lo que estás queriendo hacer. > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El lun., 3 jun. 2019 a las 1:00, Rolando Valdez (<rvaldezr en gmail.com>) > escribió: > >> Hola, >> >> Quiero especificar una ecuación con varias variables explicativas de una >> manera eficiente sin necesidad de escribir todas y cada una. Tengo un >> conjunto de variables (junto con otras) dentro de una base de datos que se >> llaman pot23 pot311 pot312 pot 316 pot317........... pot80. No >> necesariamente están secuenciadas. Quisiera saber cómo indicar que incluya >> todas las variables de pot23 a pot80 en una ecuación. >> >> He intentado lo siguiente, pero no funciona: >> >> > pots <- paste("pot",23:321, sep="") >> > eqreg2 <- lwage~SEXO+EDAD+HLENGUA+ESCOACUM+marr+wageszm14[,pots] >> > fit <- qregspiv(eqreg2, shpfile = zm15, tau = 0.5, nboot = 70, data >> wageszm14) >> Error: Can't find columns `pot24`, `pot25`, `pot26`, `pot27`, `pot28`, ... >> (and 273 more) in `.data`. >> >> De igual forma, después estaría interesado en obtener el logaritmo de >> todas >> esas variables pot~ >> >> Gracias de antemano por cualquier tipo de ayuda. >> >> -- >> Rol~ >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es >-- Rol~ [[alternative HTML version deleted]]
Juan Abasolo
2019-Jun-05 21:15 UTC
[R-es] Incluir un rango de varias variables explicativas a un modelo
Meto cuchara y disculpen si es una tontería: Y si creás un objeto con los nombres de las variables? y si solamente te interesan las que cumplan no sé qué característica en el nombre, pedirlo. pabuscar <- sort(names(tudataframe)) pabuscar[grep('x', pabuscar)] Los que saben seguro que lo hacen más lindo, pero yo creo que eso te funcionaría y no es difacil. Suerte Hau idatzi du Rolando Valdez (rvaldezr en gmail.com) erabiltzaileak (2019 eka. 4, ar. (05:43)):> Hola, gracias por la respuesta, > > No me funcionó debido a que los nombres de las variables no están seriadas, > es decir, los nombres de las variables son del tipo: x23 x25 x30, x301 > x320, x80. Entonces me da este error: > Error in eval(predvars, data, env) : object 'pot24' not found. Debido a que > pot24 no existe, ya que de pot23 se brinca a pot30. > > En Stata es algo muy simple de hacer, solo tengo que especificar gl > indepvars "x23-x80" y ya. En R no logro hacerlo. > > ¿Alguna otra sugerencia? > > Gracias de antemano. > > El lun., 3 de jun. de 2019 a la(s) 04:50, Carlos Ortega ( > cof en qualityexcellence.es) escribió: > > > Hola, > > > > Mira la función "*as.formula()*". > > Incluye un ejemplo muy parecido a lo que estás queriendo hacer. > > > > Saludos, > > Carlos Ortega > > www.qualityexcellence.es > > > > El lun., 3 jun. 2019 a las 1:00, Rolando Valdez (<rvaldezr en gmail.com>) > > escribió: > > > >> Hola, > >> > >> Quiero especificar una ecuación con varias variables explicativas de una > >> manera eficiente sin necesidad de escribir todas y cada una. Tengo un > >> conjunto de variables (junto con otras) dentro de una base de datos que > se > >> llaman pot23 pot311 pot312 pot 316 pot317........... pot80. No > >> necesariamente están secuenciadas. Quisiera saber cómo indicar que > incluya > >> todas las variables de pot23 a pot80 en una ecuación. > >> > >> He intentado lo siguiente, pero no funciona: > >> > >> > pots <- paste("pot",23:321, sep="") > >> > eqreg2 <- lwage~SEXO+EDAD+HLENGUA+ESCOACUM+marr+wageszm14[,pots] > >> > fit <- qregspiv(eqreg2, shpfile = zm15, tau = 0.5, nboot = 70, data > >> wageszm14) > >> Error: Can't find columns `pot24`, `pot25`, `pot26`, `pot27`, `pot28`, > ... > >> (and 273 more) in `.data`. > >> > >> De igual forma, después estaría interesado en obtener el logaritmo de > >> todas > >> esas variables pot~ > >> > >> Gracias de antemano por cualquier tipo de ayuda. > >> > >> -- > >> Rol~ > >> > >> [[alternative HTML version deleted]] > >> > >> _______________________________________________ > >> R-help-es mailing list > >> R-help-es en r-project.org > >> https://stat.ethz.ch/mailman/listinfo/r-help-es > >> > > > > > > -- > > Saludos, > > Carlos Ortega > > www.qualityexcellence.es > > > > > -- > Rol~ > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Juan Abasolo Hizkuntzaren eta Literaturaren Didaktika Saila | EUDIA ikerketa taldea Bilboko Hezkuntza Fakultatea Euskal Herriko Unibertsitatea UPV/EHU Sarriena auzoa z/g 48940 - Leioa (Bizkaia) T: (+34) 94 601 7567 Telegram: @JuanAbasolo Skype: abasolo72 Tutoretza ordutegia <https://labur.eus/JAbasolo-tutoretzak> [[alternative HTML version deleted]]
Carlos Ortega
2019-Jun-05 22:15 UTC
[R-es] Incluir un rango de varias variables explicativas a un modelo
Hola, Mira este código para construir tu fórmula a partir de los nombres de tus variables... #------------------------------- library(dplyr) library(randNames) set.seed(1234) # Creo unos nombres aletaorios como nombres de variables # Esto lo tendrías de tu data.frame con "names(tu_data_frame)" my_names <- 25 %>% rand_names(nationality = 'ES') %>% select(name.first) mynam_vec <- as.vector(my_names$name.first) mynam_vec # Construyo una formula con los nombres de las variables myformula <- vector() for(i in 1:length(mynam_vec)) { tmp <- mynam_vec[i] if(i != length(mynam_vec)) { myformula <- paste0(myformula, tmp, sep=" + ", collapse = "") } else { myformula <- paste0(myformula, tmp, sep= '' ) } } myform_end <- paste("lweg ~ ", myformula, sep = " ") myform_end class(myform_end) # Y con la cadena la transformo en una formula como_formula <- as.formula(myform_end) como_formula class(como_formula) #----------------------- Que produce este resultado:> library(dplyr) > library(randNames) > > set.seed(1234) > > # Creo unos nombres aletaorios como nombres de variables > # Esto lo tendrías de tu data.frame con "names(tu_data_frame)" > my_names <- 25 %>%+ rand_names(nationality = 'ES') %>% + select(name.first)> > mynam_vec <- as.vector(my_names$name.first) > mynam_vec[1] "sonia" "elisa" "adrian" "irene" "laura" "joaquin" "raquel" [8] "eva" "rodrigo" "carmelo" "vicenta" "jordi" "nuria" "enrique" [15] "luz" "mohamed" "alfredo" "nieves" "fatima" "santiago" "francisco" [22] "joaquin" "jose" "manuel" "andrea"> > # Construyo una formula con los nombres de las variables > myformula <- vector() > for(i in 1:length(mynam_vec)) {+ tmp <- mynam_vec[i] + if(i != length(mynam_vec)) { + myformula <- paste0(myformula, tmp, sep=" + ", collapse = "") + } else { + myformula <- paste0(myformula, tmp, sep= '' ) + } + }> myform_end <- paste("lweg ~ ", myformula, sep = " ") > myform_end[1] "lweg ~ sonia + elisa + adrian + irene + laura + joaquin + raquel + eva + rodrigo + carmelo + vicenta + jordi + nuria + enrique + luz + mohamed + alfredo + nieves + fatima + santiago + francisco + joaquin + jose + manuel + andrea"> class(myform_end)[1] "character"> > # Y con la cadena la transformo en una formula > como_formula <- as.formula(myform_end) > como_formulalweg ~ sonia + elisa + adrian + irene + laura + joaquin + raquel + eva + rodrigo + carmelo + vicenta + jordi + nuria + enrique + luz + mohamed + alfredo + nieves + fatima + santiago + francisco + joaquin + jose + manuel + andrea> class(como_formula)[1] "formula" #----------------- Saludos, Carlos Ortega www.qualityexcellence.es El mar., 4 jun. 2019 a las 5:43, Rolando Valdez (<rvaldezr en gmail.com>) escribió:> Hola, gracias por la respuesta, > > No me funcionó debido a que los nombres de las variables no están > seriadas, es decir, los nombres de las variables son del tipo: x23 x25 x30, > x301 x320, x80. Entonces me da este error: > Error in eval(predvars, data, env) : object 'pot24' not found. Debido a > que pot24 no existe, ya que de pot23 se brinca a pot30. > > En Stata es algo muy simple de hacer, solo tengo que especificar gl > indepvars "x23-x80" y ya. En R no logro hacerlo. > > ¿Alguna otra sugerencia? > > Gracias de antemano. > > El lun., 3 de jun. de 2019 a la(s) 04:50, Carlos Ortega ( > cof en qualityexcellence.es) escribió: > >> Hola, >> >> Mira la función "*as.formula()*". >> Incluye un ejemplo muy parecido a lo que estás queriendo hacer. >> >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> >> El lun., 3 jun. 2019 a las 1:00, Rolando Valdez (<rvaldezr en gmail.com>) >> escribió: >> >>> Hola, >>> >>> Quiero especificar una ecuación con varias variables explicativas de una >>> manera eficiente sin necesidad de escribir todas y cada una. Tengo un >>> conjunto de variables (junto con otras) dentro de una base de datos que >>> se >>> llaman pot23 pot311 pot312 pot 316 pot317........... pot80. No >>> necesariamente están secuenciadas. Quisiera saber cómo indicar que >>> incluya >>> todas las variables de pot23 a pot80 en una ecuación. >>> >>> He intentado lo siguiente, pero no funciona: >>> >>> > pots <- paste("pot",23:321, sep="") >>> > eqreg2 <- lwage~SEXO+EDAD+HLENGUA+ESCOACUM+marr+wageszm14[,pots] >>> > fit <- qregspiv(eqreg2, shpfile = zm15, tau = 0.5, nboot = 70, data >>> wageszm14) >>> Error: Can't find columns `pot24`, `pot25`, `pot26`, `pot27`, `pot28`, >>> ... >>> (and 273 more) in `.data`. >>> >>> De igual forma, después estaría interesado en obtener el logaritmo de >>> todas >>> esas variables pot~ >>> >>> Gracias de antemano por cualquier tipo de ayuda. >>> >>> -- >>> Rol~ >>> >>> [[alternative HTML version deleted]] >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es en r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >> >> >> -- >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> > > > -- > Rol~ >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Rolando Valdez
2019-Jun-06 19:07 UTC
[R-es] Incluir un rango de varias variables explicativas a un modelo
Sí, más o menos así lo resolví: nn <-names(wageszm14) lvadd <- nn[grep("^lvadd", nn)] (eqreg <- as.formula(paste("lwage ~ age + educ + percmen + marr + natlang +", paste(lvadd, collapse = "+")))) lwage ~ age + educ + percmen + marr + natlang + lvadd23_pot23 + lvadd3133_pot3133 + lvadd_commer_pot_commer + lvadd_communic_pot_communic + lvadd_hserv_pot_hserv + lvadd62_pot62 + lvadd_host_pot_host + lvadd81_pot81 Con eso quedó resuelto. Gracias a todos por sus respuestas. El mié., 5 de jun. de 2019 a la(s) 14:15, Juan Abasolo (juan.abasolo en ehu.eus) escribió:> Meto cuchara y disculpen si es una tontería: > Y si creás un objeto con los nombres de las variables? y si solamente te > interesan las que cumplan no sé qué característica en el nombre, pedirlo. > > pabuscar <- sort(names(tudataframe)) > pabuscar[grep('x', pabuscar)] > > Los que saben seguro que lo hacen más lindo, pero yo creo que eso te > funcionaría y no es difacil. Suerte > > Hau idatzi du Rolando Valdez (rvaldezr en gmail.com) erabiltzaileak (2019 > eka. 4, ar. (05:43)): > >> Hola, gracias por la respuesta, >> >> No me funcionó debido a que los nombres de las variables no están >> seriadas, >> es decir, los nombres de las variables son del tipo: x23 x25 x30, x301 >> x320, x80. Entonces me da este error: >> Error in eval(predvars, data, env) : object 'pot24' not found. Debido a >> que >> pot24 no existe, ya que de pot23 se brinca a pot30. >> >> En Stata es algo muy simple de hacer, solo tengo que especificar gl >> indepvars "x23-x80" y ya. En R no logro hacerlo. >> >> ¿Alguna otra sugerencia? >> >> Gracias de antemano. >> >> El lun., 3 de jun. de 2019 a la(s) 04:50, Carlos Ortega ( >> cof en qualityexcellence.es) escribió: >> >> > Hola, >> > >> > Mira la función "*as.formula()*". >> > Incluye un ejemplo muy parecido a lo que estás queriendo hacer. >> > >> > Saludos, >> > Carlos Ortega >> > www.qualityexcellence.es >> > >> > El lun., 3 jun. 2019 a las 1:00, Rolando Valdez (<rvaldezr en gmail.com>) >> > escribió: >> > >> >> Hola, >> >> >> >> Quiero especificar una ecuación con varias variables explicativas de >> una >> >> manera eficiente sin necesidad de escribir todas y cada una. Tengo un >> >> conjunto de variables (junto con otras) dentro de una base de datos >> que se >> >> llaman pot23 pot311 pot312 pot 316 pot317........... pot80. No >> >> necesariamente están secuenciadas. Quisiera saber cómo indicar que >> incluya >> >> todas las variables de pot23 a pot80 en una ecuación. >> >> >> >> He intentado lo siguiente, pero no funciona: >> >> >> >> > pots <- paste("pot",23:321, sep="") >> >> > eqreg2 <- lwage~SEXO+EDAD+HLENGUA+ESCOACUM+marr+wageszm14[,pots] >> >> > fit <- qregspiv(eqreg2, shpfile = zm15, tau = 0.5, nboot = 70, data >> >> wageszm14) >> >> Error: Can't find columns `pot24`, `pot25`, `pot26`, `pot27`, `pot28`, >> ... >> >> (and 273 more) in `.data`. >> >> >> >> De igual forma, después estaría interesado en obtener el logaritmo de >> >> todas >> >> esas variables pot~ >> >> >> >> Gracias de antemano por cualquier tipo de ayuda. >> >> >> >> -- >> >> Rol~ >> >> >> >> [[alternative HTML version deleted]] >> >> >> >> _______________________________________________ >> >> R-help-es mailing list >> >> R-help-es en r-project.org >> >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> >> > >> > >> > -- >> > Saludos, >> > Carlos Ortega >> > www.qualityexcellence.es >> > >> >> >> -- >> Rol~ >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > -- > Juan Abasolo > > Hizkuntzaren eta Literaturaren Didaktika Saila | EUDIA ikerketa taldea > Bilboko Hezkuntza Fakultatea > Euskal Herriko Unibertsitatea > UPV/EHU > > Sarriena auzoa z/g 48940 - Leioa (Bizkaia) > > T: (+34) 94 601 7567 > Telegram: @JuanAbasolo > Skype: abasolo72 > > Tutoretza ordutegia <https://labur.eus/JAbasolo-tutoretzak> >-- Rol~ [[alternative HTML version deleted]]