Dividir / subconjuntar un dataframe por factores en una columna

Mis datos son así (por ejemplo):

ID Rate State 1 24 AL 2 35 MN 3 46 FL 4 34 AL 5 78 MN 6 99 FL 

Datos:

 structure(list(ID = 1:6, Rate = c(24L, 35L, 46L, 34L, 78L, 99L), State = structure(c(1L, 3L, 2L, 1L, 3L, 2L), .Label = c("AL","FL", "MN"), class = "factor")), .Names = c("ID", "Rate", "State"), class = "data.frame", row.names = c(NA, -6L)) 

Quiero dividir los datos por estado y quiero obtener 3 conjuntos de datos como a continuación:

 data set 1 ID Rate State 1 24 AL 4 34 AL data set 2 ID Rate State 2 35 MN 5 78 MN data set 3 ID Rate State 3 46 FL 6 99 FL 

¿Qué función debería usar?

Estaba pensando en la función de división o subconjunto, pero todavía no tengo idea todavía.

Podríamos usar split :

 mylist <- split(df, df$State) mylist $AL ID Rate State 1 1 24 AL 4 4 34 AL $FL ID Rate State 3 3 46 FL 6 6 99 FL $MN ID Rate State 2 2 35 MN 5 5 78 MN 

Para acceder al número de elementos:

 mylist[[1]] 

o por nombre:

 mylist$AL ID Rate State 1 1 24 AL 4 4 34 AL 

?split

Descripción

split divide los datos en el vector x en los grupos definidos por f . Las formas de reemplazo reemplazan los valores correspondientes a dicha división. unsplit invierte el efecto de split.