créer des subsets en utilisant une variable qualitative

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Sophie Dubois
Messages : 14
Enregistré le : 12 Mai 2014, 13:07

créer des subsets en utilisant une variable qualitative

Messagepar Sophie Dubois » 24 Sep 2014, 17:12

Bonjour,

Je souhaiterais pouvoir créer en boucle des subsets à partir d'un tableau de données initiales, en utilisant une variable qualitative comme facteur de sélection du subset. Et je souhaiterais enregistrer dans de nouveaux objets ces subsets.

Le jeu de données sur lequel je souhaite faire cette manip est énorme (12000 colonnes et 100000 lignes).

J'ai essayé de le faire avec un petit fichier ayant les mêmes critères: iris {datasets}.
J'ai écrit le script ci-dessous:

data(iris)
iris

gp <- unique(iris$Species)
gp
for (i in 1:length(gp)) {
sub <- subset(iris, Species == gp[i])
name <- paste(i,iris,sep="_")
write.table(sub, name, sep="\t")
}


Mais j'ai un message d'erreur, lié je pense au fait que ma variable Species n'est pas numérique.

Erreur dans file(file, ifelse(append, "a", "w")) :
argument 'description' incorrect
De plus : Message d'avis :
In if (file == "") file <- stdout() else if (is.character(file)) { :
la condition a une longueur > 1 et seul le premier élément est utilisé


Comment résoudre ce problème?

Merci beaucoup pour votre aide!!

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 24 Sep 2014, 19:36

Une proposition:

Code : Tout sélectionner

data(iris)

for (i in levels(iris$Species)) {
 assign(i,subset(iris, Species == i))
 }


et ça donne :

Code : Tout sélectionner

setosa
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
2           4.9         3.0          1.4         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
4           4.6         3.1          1.5         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
6           5.4         3.9          1.7         0.4  setosa
7           4.6         3.4          1.4         0.3  setosa
8           5.0         3.4          1.5         0.2  setosa
9           4.4         2.9          1.4         0.2  setosa
10          4.9         3.1          1.5         0.1  setosa
11          5.4         3.7          1.5         0.2  setosa
12          4.8         3.4          1.6         0.2  setosa
13          4.8         3.0          1.4         0.1  setosa
14          4.3         3.0          1.1         0.1  setosa
15          5.8         4.0          1.2         0.2  setosa
16          5.7         4.4          1.5         0.4  setosa
17          5.4         3.9          1.3         0.4  setosa
18          5.1         3.5          1.4         0.3  setosa
19          5.7         3.8          1.7         0.3  setosa
20          5.1         3.8          1.5         0.3  setosa
21          5.4         3.4          1.7         0.2  setosa
22          5.1         3.7          1.5         0.4  setosa
23          4.6         3.6          1.0         0.2  setosa
24          5.1         3.3          1.7         0.5  setosa
25          4.8         3.4          1.9         0.2  setosa
26          5.0         3.0          1.6         0.2  setosa
27          5.0         3.4          1.6         0.4  setosa
28          5.2         3.5          1.5         0.2  setosa
29          5.2         3.4          1.4         0.2  setosa
30          4.7         3.2          1.6         0.2  setosa
31          4.8         3.1          1.6         0.2  setosa
32          5.4         3.4          1.5         0.4  setosa
33          5.2         4.1          1.5         0.1  setosa
34          5.5         4.2          1.4         0.2  setosa
35          4.9         3.1          1.5         0.2  setosa
36          5.0         3.2          1.2         0.2  setosa
37          5.5         3.5          1.3         0.2  setosa
38          4.9         3.6          1.4         0.1  setosa
39          4.4         3.0          1.3         0.2  setosa
40          5.1         3.4          1.5         0.2  setosa
41          5.0         3.5          1.3         0.3  setosa
42          4.5         2.3          1.3         0.3  setosa
43          4.4         3.2          1.3         0.2  setosa
44          5.0         3.5          1.6         0.6  setosa
45          5.1         3.8          1.9         0.4  setosa
46          4.8         3.0          1.4         0.3  setosa
47          5.1         3.8          1.6         0.2  setosa
48          4.6         3.2          1.4         0.2  setosa
49          5.3         3.7          1.5         0.2  setosa
50          5.0         3.3          1.4         0.2  setosa


Nicolas

Sophie Dubois
Messages : 14
Enregistré le : 12 Mai 2014, 13:07

ça marche!

Messagepar Sophie Dubois » 24 Sep 2014, 21:20

Merci beaucoup, c'est exactement ce que je voulais!

Bonne soirée,
sophie


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

cron