2010-06-24 5 views
1

Quelle est la différence entre les deux instructions ci-dessous. Ils donnent des résultats différents, et puisque j'essaie de venir à R de SPSS, je suis un peu confus.Calculer la colonne dans R

ds$share.all <- ds[132]/ ds[3] 
mean(ds$share.all, na.rm=T) 

et

ds$share.all2 <- ds$col1/ ds$Ncol2 
mean(ds$share.all2, na.rm=T) 

ils rendent la même moyenne, mais sur la première, la sortie est imprimée comme

 col1  
    0.02669424 

et la seconde imprime seulement le .02xxxxx.

Toute aide sera grandement appréciée.

+0

Qu'en est-il de certains segments de données? – aL3xa

Répondre

8

Indiquer une colonne d'une trame de données avec des parenthèses simples (votre premier exemple) produit une trame de données avec juste cette colonne, mais en utilisant l'opérateur $ (comme dans votre deuxième exemple) est juste un vecteur. L'impression de quelque chose imprimera les noms qui lui sont associés s'il a des noms (le col1 dans votre premier exemple). La trame de données que vous obtenez avec ds [132] a un attribut de nom, mais pas le vecteur que vous obtenez avec ds $ col1. L'équivalent de ds $ col1 serait d'utiliser deux parenthèses au lieu de simples: ds [[132]]. Par exemple:

> x<-data.frame(1:10) 
> names(x)<-"var" 
> class(x$var) 
[1] "integer" 
> class(x[1]) 
[1] "data.frame" 
> identical(x[1],x$var) 
[1] FALSE 
> identical(x[[1]],x$var) 
[1] TRUE 
Questions connexes