[R-es] Consulta filtro múltiple.

Víctor Granda García v|ctorgr@nd@g@rc|@ @end|ng |rom gm@||@com
Jue Jul 1 07:53:49 CEST 2021


Otra opción es combinar case_when y filter con dplyr. Con case_when creas
una variable dummy y luego filtras por esta:

data %>%
  mutate(
    dummy = case_when(
      Monodroga == aciclovir & unidades >= 20 ~ TRUE,
      Monodroga == paracetamol & unidades >= 10 ~ TRUE,
      Monodroga == rosuvastina & unidades >= 30 ~ TRUE,
      TRUE ~ FALSE
      )
    ) %>%
  filter(isTRUE(dummy))


*Víctor Granda García*
Data Scientist
Ecosystem Modelling Facility - CREAF


Tel. +34 93 581 33 53
CREAF. Campus UAB. Edifici C. 08193 Bellaterra (Barcelona)

Antes de imprimir este mensaje electrónico piense en el medio ambiente.



On Thu, 1 Jul 2021 at 06:53, juan manuel dias <juamadias using gmail.com> wrote:

> Muchas gracias! Lo veo una buena opción, mañana voy a probar con algunas
> monodrogas para ver que funcione y en tal caso lo escalo a toda la base.
> Muchas gracias! Juan.
>
> El mié., 30 de jun. de 2021 7:35 p.m., Eric Concha M. <
> ericconchamunoz using gmail.com> escribió:
>
> >
> >  Y si lo haces con la libreria data.table ? suponiendo que bd es tu
> >  base de datos:
> >
> >  bd1 <- bd[monodroga=="aciclovir" & UNIDADES==20,]
> >  bd2 <- bd[monodroga=="paracetamol" & UNIDADES==10,]
> >  bd3 <- bd[monodroga=="rosuvastatina" & UNIDADES==30,]
> >
> > y luego las unes:
> >
> >  bd.nueva <- rbind(bd1,bd2,bd3)
> >
> > Algo así podría ser ... hay muchas otras formas de hacerlo, pero me
> > gusta data.table cuando son bbdd grandes xq es muy rápida, sobretodo si
> > la usas con set.key() ... mira la ayuda de R para que veas los detalles
> > de data.table.
> >
> > Ojo con los detalles, como que la columna monodroga sea tipo caracter o
> > factor, q UNIDADES sea numérico, y así ...
> >
> > Suerte !!
> >
> > Eric.
> >
> >
> >
> >
> > n Wed, 30 Jun 2021 19:15:21 -0300
> > juan manuel dias <juamadias using gmail.com> wrote:
> >
> > > Hola, como andan!
> > >
> > > Tengo una base de datos de medicamentos (monodrogas), con tres
> > > variables, unidades, precio y precio unitario. Necesito llegar a un
> > > data frame donde tenga solo las monodrogas que cumplen alguna
> > > condición en la variable unidades, pero considerando varias
> > > monodrogas.
> > >
> > > Esto es un recorte de la base:
> > >
> > > Monodroga UNIDADES Precio PrecioUnit
> > > aciclovir 20 111272 55.636
> > > aciclovir 20 97464 48.732
> > > aciclovir 40 98322 432
> > > aciclovir 40 98322 324
> > > paracetamol 1 19291 192.91
> > > paracetamol 1 24702 247.02
> > > paracetamol 1 21120 211.2
> > > paracetamol 10 9993 9.993
> > > paracetamol 10 10443 10.443
> > > rosuvastatina 14 141134 100.81
> > > rosuvastatina 28 258262 92.2364286
> > > rosuvastatina 28 201590 71.9964286
> > > rosuvastatina 30 183717 61.239
> > > rosuvastatina 30 231935 77.3116667
> > >
> > > Por ejemplo, para la monodroga "aciclovir" necesito solo las filas
> > > donde Unidades==20,  en paracetamol==10 y en rosuvastatina==30.
> > >
> > > Estoy trabajando con tidyverse y he probado algunas cosas que no han
> > > funcionado.
> > >
> > > prom_max_min_base_precios_May_2021_final<-base_precios_May_2021_final
> > > %>% ##unite("concat1",CodDrog,CodForma,sep="",remove = FALSE) %>%
> > >   ##unite("concat2",CodDrog,CodForma,Potencia,sep="",remove = FALSE)
> > > %>% filter(!is.na(CodDrog)) %>%
> > >   ##filter(monodroga=="aciclovir", Unidades %in% c(20)) %>%
> > >   group_by(concat1,concat2,monodroga) %>%
> > >   summarize(min_may_2021=min(precio_unitario),
> > >             max_may_2021=max(precio_unitario),
> > >             prom_may_2021=mean(precio_unitario)) %>%
> > >   ungroup()
> > >
> > > Ajdunto la base en csv.
> > >
> > > Muchas gracias!
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es using r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es