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_formula
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(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]]