Problema
Queremos extraer del siguiente data frame una muestra aleatoria basada en la columna id, de manera que seleccionemos aleatoriamente dos ids y extraigamos todas las filas asociadas a los mismos. Por ejemplo, si seleccionamos aleatoriamente los ids 1 y 2, el resultado debería incluir las tres primeras filas.
id date date2
1 1 23-01-08 2008-01-23
2 1 01-11-07 2007-11-01
3 2 30-11-07 2007-11-30
4 3 17-12-07 2007-12-17
5 3 12-12-08 2008-12-12
id<-c(1,1,2,3,3)
date<-c("23-01-08","01-11-07","30-11-07","17-12-07","12-12-08")
df<-data.frame(id,date)
df$date2<-as.Date(as.character(df$date), format = "%d-%m-%y")
Soluciones
a <- sample(unique(df$id), 2)
subset(df, id %in% a)
library(sqldf)
a <- sqldf("SELECT DISTINCT id FROM df ORDER BY RANDOM(*) LIMIT 2")
sqldf("SELECT * FROM df WHERE id IN a")
id date date2
1 1 23-01-08 2008-01-23
2 1 01-11-07 2007-11-01
3 2 30-11-07 2007-11-30
Entradas relacionadas
- Eliminar de un data frame aquellas filas duplicadas en otro data frame
- Eliminar duplicados de un data frame en R
- Seleccionar con sqldf un subconjunto de filas de una columna en un data frame diferente
Referencias
No hay comentarios:
Publicar un comentario