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! ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210630/6497cf18/attachment.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: base_monodrogas.csv Type: application/vnd.ms-excel Size: 455 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210630/6497cf18/attachment.xlb>
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 en 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!
miguei@@@gei@rodriguez@mui@os m@iii@g oii serg@s@es
2021-Jul-01 07:25 UTC
[R-es] Consulta filtro múltiple.
Hola Juan Manuel. Otro enfoque (de la vieja escuela).... base <- read.csv2("base_monodrogas.csv") library(sqldf) ?seleccion <- sqldf("select * from base where (monodroga='aciclovir' AND UNIDADES=20) OR (monodroga='paracetamol' AND UNIDADES=10) ") M?s info del paquete sqldf aqu? -> https://rquer.netlify.app/sql/ Un saludo, Miguel. ________________________________ De: R-help-es <r-help-es-bounces en r-project.org> en nombre de juan manuel dias <juamadias en gmail.com> Enviado: jueves, 1 de julio de 2021 0:15 Para: Lista R Asunto: [R-es] Consulta filtro m?ltiple. 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<http://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! ________________________________ Nota: A informaci?n contida nesta mensaxe e os seus posibles documentos adxuntos ? privada e confidencial e est? dirixida ?nicamente ? seu destinatario/a. Se vostede non ? o/a destinatario/a orixinal desta mensaxe, por favor elim?nea. A distribuci?n ou copia desta mensaxe non est? autorizada. Nota: La informaci?n contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y est? dirigida ?nicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elim?nelo. La distribuci?n o copia de este mensaje no est? autorizada. See more languages: http://www.sergas.es/aviso-confidencialidad [[alternative HTML version deleted]]