[R-es] Consulta filtro múltiple.

Eric Concha M. er|cconch@munoz @end|ng |rom gm@||@com
Jue Jul 1 00:34:45 CEST 2021


 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!



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