Segmentation d'une base de donnée

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

LAOUFI Redouane
Messages : 1
Enregistré le : 11 Aoû 2006, 12:25

Segmentation d'une base de donnée

Messagepar LAOUFI Redouane » 05 Déc 2006, 22:01

Bonjour tout le monde,
J’ai chargé un fichier texte sur R par le biais de la fonction read.table().

Je souhaiterai savoir s’il y a un moyen de couper ma base selon certains critères notamment la présence ou l’absence d’une variable.

Mon objectif par la suite est d’exporter plusieurs tables dans un répertoire bien précis.

Merci pour votre aide,
Redouane

Héla Romdhani
Messages : 20
Enregistré le : 25 Juin 2006, 12:11

Messagepar Héla Romdhani » 05 Déc 2006, 22:25

Bonjour Redouane,

Je sais pas si j'ai bien compris ce que vous voulez dire, mais essayez de voir avec la commande "which". Par exemple si X prend la valeur 1 si la variable en question est présente, et si Data est la matrice contenant vos données;

> ind<-which(X==1) # ind est le vecteur des indices pour lesquels la
variable X prend la valeur 1

Ensuite, si vos variables sont les colonnes de la matrice Data
> Data1<-Data[,ind]

sinon si vos variables sont les lignes de la matrice Data
> Data1<-Data[ind,] )

J'espère que c'était ce que vous entendez.

Amicalement
Héla

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 06 Déc 2006, 08:45

Bonjour,


Une autre méthode est de se servir directement du critère de sélection qui t'intéresse (telle ou telle variable égale à 1, ou supérieur à 50 ...) dans l'indexation de ton tableau pour ne sélectionner qu'un sous ensemble de ton tableau.
Le résultat d'une condition est un vecteur logique qui te renvoie des TRUE et des FALSE, et lorsque tu cherches a afficher ton tableau avec cette condition il ne va afficher que les lignes ou les colonnes pour lesquelles ta condition est TRUE :

Code : Tout sélectionner

test <- matrix(rbinom(30,1,0.5),10,3)
colnames(test) <- paste("X",1:3,sep="")
test <- as.data.frame(test)
test
     X1 X2 X3
[1,]  1  0  1
[2,]  0  1  0
[3,]  0  1  1
[4,]  0  1  0
[5,]  0  1  1

# si tu veux que les lignes pour lesquelles X1 est égale à 0

test$X1==0
[1] FALSE  TRUE  TRUE  TRUE  TRUE

test[test$X1==0,]
 X1 X2 X3
2  0  1  0
3  0  1  1
4  0  1  0
5  0  1  1

# dans la même logique tu peux aussi mettre des conditions multiples :

test$X1 >0 & test$X3==1
[1]  TRUE FALSE FALSE FALSE FALSE

test[test$X1 >0 & test$X3==1,]
  X1 X2 X3
1  1  0  1


En espérant t'avoir aidé.

Maxime

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 06 Déc 2006, 12:15

Si R ne sert qu'à partitionner le fichier texte initial, il est peut-être plus efficace de travailler directement la base de données avec un langage approprié, SQL par exemple. Cela pourrait d'ailleurs éviter de passer par le fichier texte.

Renaud


Retourner vers « Questions en cours »

Qui est en ligne

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