2 votes

Comment puis-je créer un nouvel ensemble de données à partir des noms des lignes ?

Mon ensemble de données est dans un format long qui comporte les noms des pays, des années et des valeurs dans les colonnes.

Je veux un nouvel ensemble de données pour chaque pays et pour chaque année, je peux le faire individuellement mais répéter ces 195 données n'est pas génial, je veux donc le faire en utilisant "for".

Cela fonctionne pour chaque pays

Mali = filter(datosUnicef , CountryName == "Mali")

Mais cela ne semble pas fonctionner

for (i in datosUnicef$CountryName) {
   i = filter(datosUnicef , CountryName == i)
}

comment puis-je le faire fonctionner ?

0voto

akrun Points 148302

Si l'intention est de créer plusieurs ensembles de données, utilisez group_split pour diviser les données en list de data.frame s

library(dplyr)
lst1 <- datosUnicef %>%
            group_split(CountryName)

et extraire les données de list con [[ ou $

NOTE : Il est préférable de ne pas créer plusieurs objets dans l'environnement global. Créez plutôt un list


En ce qui concerne le problème dans le code de l'OP, il affecte à la lettre i à chaque itération, donc il est mis à jour. A la place, une option serait assign (non recommandé cependant)

for(i in unique(datosUnicef$CountryName)) {
      assign(i, filter(datosUnicef, CountryName == i))
   }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X