Comment diviser un bloc de données?
Je veux diviser un bloc de données dans plusieurs petits. Cela ressemble à une très banale question, cependant je ne peux pas trouver une solution de recherche sur le web.
- jamais compris
split()
, mais à l'aide dentile
dedplyr
et ensuite le filtrage par le groupe de l'index ("quartile") fait ce que je voulais:group = df[df$quartile==i,]
.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également couper le bloc de données en un nombre arbitraire de petits dataframes. Ici, nous avons coupé en deux dataframes.
donne
Vous pouvez également diviser un bloc de données basé sur une colonne existante. Par exemple, pour créer trois trames de données basé sur le
cyl
colonne dansmtcars
:Si vous souhaitez diviser un dataframe selon les valeurs de certaines variables, je vous suggère de l'aide
daply()
de laplyr
paquet.Maintenant,
x
est un tableau de dataframes. Pour accéder à l'un des dataframes, vous pouvez indexer avec le nom du niveau de la division de la variable.J'aimerais être sûr qu'il n'y a pas d'autres moyens astucieux pour faire face à vos données avant de le fractionner en plusieurs dataframes bien.
dlply
?dlply
premier, mais il n'a pas de nommer automatiquement les entrées par le regroupement de la variable. Je ne sais pas ce que j'ai fait en premier, mais aparentlydaply
ne fonctionne pas sauf si une fonction est spécifiée. J'ai édité la réponse de travailler.Vous pouvez également utiliser
Cela fera un dataframe avec les valeurs où sum_points = 2500
Il donne :
Je viens de poster un type d'une RFC qui pourrait vous aider: Diviser un vecteur en morceaux dans la R
Cheers,
Sebastian
subset()
est également utile:Pour une trousse d'enquête, peut-être le
survey
paquet est pertinent?http://faculty.washington.edu/tlumley/survey/
La réponse que vous voulez dépend beaucoup de comment et pourquoi vous voulez briser le bloc de données.
Par exemple, si vous souhaitez laisser de côté certaines variables, vous pouvez créer de nouveaux blocs de données à partir des colonnes spécifiques de la base de données. Les indices entre parenthèses après le bloc de données, reportez-vous aux numéros de ligne et colonne. Découvrez Spoetry pour une description complète.
Ou, vous pouvez choisir des lignes spécifiques.
Et ces indices peuvent également être logique tests, tels que le choix des lignes qui contiennent une valeur particulière, ou par des facteurs ayant une valeur souhaitée.
Que voulez-vous faire avec les morceaux laissés sur? Avez-vous besoin pour effectuer la même opération sur chaque morceau de la base de données? Ensuite, vous aurez envie de vous assurer que les sous-ensembles de la trame de données à la fin dans un objet pratique, comme une liste, qui vous aide à effectuer la même commande sur chaque bloc de la trame de données.
Si vous voulez diviser par des valeurs dans une des colonnes, vous pouvez utiliser
lapply
. Par exemple, pour diviserChickWeight
dans un autre jeu de données, pour chaque poussin:Le fractionnement de la trame de données semble contre-productif. Au lieu de cela, utiliser le split-appliquer-combiner paradigme, par exemple, produire des données
ensuite divisé uniquement les colonnes appropriées, et appliquer les
scale()
fonction de x dans chaque groupe, et de combiner les résultats (à l'aide desplit<-
ouave
)Ce sera très rapide par rapport à la fente de données.des cadres, et le résultat reste utilisable dans l'analyse en aval sans itération. Je pense que le dplyr syntaxe est
En général, cette dplyr solution est plus rapide que le fractionnement des trames de données, mais pas aussi vite que split-appliquer-combiner.