Définir des facteurs

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

Laetitia Buret
Messages : 1
Enregistré le : 27 Sep 2016, 09:47

Définir des facteurs

Messagepar Laetitia Buret » 30 Sep 2016, 12:58

Bonjour,

Complètement novice sur R, j’essaie d’analyser des données de microbiote intestinal de souris en suivant les scripts fournis par une collègue.
Je veux faire une ordination en utilisant le package vegan.

J’ai deux fichiers .csv :
- Ma matrice de données se présente sous cette forme :
Echantillons 101.1 109.1 133.1 153.1 157.1
342_06w0 0 0 0 0 0.4
342_07w0 0 0 0.33 0 0.42
342_08w0 0 0 0.89 0 0.45

- Mon fichier traitement qui attribue un sexe, genotype, traitement et âge à chaque échantillon :
Echantillons Sex Genotype Treatment Week
342_06w0 F WT SAL 6
342_07w0 F WT SAL 7
342_08w0 F WT SAL 8

Le script est le suivant :
> ARISAdata<-read.csv('RelnMETHoo.csv', header=FALSE)
> ARISA.treat <-read.csv('RelnMETHoo.treat.csv',header=TRUE)
> ARISAord <-metaMDS(ARISAdata,trace=FALSE)

Error in FUN(X[[i]], ...) : only defined on a data frame with all numeric variables
De plus : Warning message: In Ops.factor(left, right) : ‘<’ not meaningful for factors

J’ai déjà remplacé les virgules par des points dans mes fichiers Excel.
D’après ce que j’ai pu lire sur différents forums, il faudrait que je définisse les différentes conditions de mon fichier traitement comme des facteurs.

J’ai essayé :

> ARISAdata<-read.csv('RelnMETHoo.csv', header=FALSE)
> ARISA.treat <-read.csv('RelnMETHoo.treat.csv',header=TRUE)
> sex <- c("F","F","F","F”,"M”, …) J’ai beaucoup d’échantillons, je ne mets pas l’intégralité de la formule ici.
> sex <- factor(sex)
> sex
[1] F F F F M …
Levels: F M

> genotype <- c("WT","WT","WT","WT","HET","HET",…)
> genotype <- factor(genotype)
> genotype
[1] WT WT WT WT HET HET …
Levels: HET WT

> treatment <- c("SAL","SAL","SAL", "METH"…)
> treatment <- factor(treatment)
> treatment
[1] SAL SAL SAL METH METH …
Levels: METH SAL

> week <- c("6","7","8","9","10",11,…)
> week <- factor(week)
> week
[1] 6 7 8 9 10 11

> ARISAord <-metaMDS(ARISAdata,trace=FALSE)

Error in FUN(X[[i]], ...) : only defined on a data frame with all numeric variables
De plus : Warning message: In Ops.factor(left, right) : ‘<’ not meaningful for factors

J’ai donc toujours le même message au final.
J’ai vu sur ce forum une autre solution consistant à utiliser les fonctions as.numeric/character mais je ne suis pas sûre du script.

Quelqu’un pour m’éclairer ?
Merci d’avance.

matthieu faron
Messages : 586
Enregistré le : 16 Fév 2011, 11:23

Re: Définir des facteurs

Messagepar matthieu faron » 02 Oct 2016, 16:12

Bonjour,

Je ne connais pas ce package mais il semble que la fonction n'accepte qu'un data.frame ne contenant que des numeric. Ici j'ai l'impression que la première colonne (qui correspond à l'identifiant) est un facteur. Pour vérifier :

Code : Tout sélectionner

summary(ARISAdata)
## ou
str(ARISAdata)


Pour régler le problème vous pouvez essayer en supprimant la première colonne (ou en la passant en noms de lignes):

Code : Tout sélectionner

ARISAdata2 <- ARISAdata
rownames(ARISAdata2) <- ARISAdata2[, 1]
ARISAdata2 <- ARISAdata2[, -1]
ARISAord <-metaMDS(ARISAdata2,trace=FALSE)
Matthieu FARON


Retourner vers « Questions en cours »

Qui est en ligne

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

cron