Tengo un marco de datos que contiene valores en 4 columnas:
Por ejemplo: ID
, price
, click count
,rating
Lo que me gustaría hacer es "dividir" este marco de datos en N grupos diferentes donde cada grupo tendrá el mismo número de filas con la misma distribución de precios, recuento de clics y atributos de calificación.
Cualquier consejo es muy apreciado, ya que no tengo la menor idea de cómo abordar esto.
r
distributions
Rajpal Kulhari
fuente
fuente
Respuestas:
Si entiendo la pregunta correctamente, esto te dará lo que quieres. Suponiendo que se llama a su marco de datos
df
y lo haN
definido, puede hacer esto:Esto devolverá una lista de marcos de datos donde cada marco de datos consiste en filas seleccionadas al azar
df
. Por defectosample()
asignará la misma probabilidad a cada grupo.fuente
Esta es una respuesta muy tardía, pero encontré esta página mientras buscaba en Google si el problema como se ha mencionado alguna vez se ha discutido en alguna parte. Tal vez mi respuesta ayude si alguien encuentra esta página de ahora en adelante.
Escribí un paquete R, que hace exactamente lo que pedía la pregunta: toma un
data.frame
y crea N grupos diferentes al intentar minimizar las diferencias entre grupos en uno o varios criterios. Utiliza un método simple basado en la asignación aleatoria repetida , que también es el método sugerido en la respuesta aprobada.Este es el enlace al paquete minDiff :
Para abordar el problema declarado, puede usar:
El
repetitions
argumento determinará con qué frecuencia crea aleatoriamente diferentes grupos. Se devolverá la mejor asignación, la que tiene diferencias mínimas entre los grupos.fuente
Aunque la respuesta de Alex A ofrece la misma probabilidad para cada grupo, no cumple con la solicitud de la pregunta de que los grupos tengan el mismo número de filas. En R:
fuente
Esto se puede resolver con anidamiento usando tidyr / dplyr
fuente