2017-09-20 8 views
0

J'essaie de déterminer certaines valeurs basées sur le support cellulaire. J'ai un cadre principal de données qui contient les données de tous les transporteurs, et j'ai créé 3 trames de données individuelles de la principale trame de données par le fournisseur:R: NA sur la moyenne pour une variable numérique

verizondf <- maindata[maindata$network == "Verizon",] 
attdf <- maindata[maindata$network=="ATT",] 
tmobiledf <- maindata[maindata$network=="TMobile",] 

Je veux obtenir la moyenne pour l'une des variables, « télécharger ", qui est une valeur numérique.

Sur la trame de données de verizondf, il fonctionne très bien:

> mean(verizondf$download) 
[1] 462004.4 

Pour les 2 autres, je reçois NA:

> mean(attdf$download) 
[1] NA 

Je me suis demandé si le type de données a changé à un moment donné, mais J'ai vérifié et il est encore numérique:

> str(attdf$download) 
num [1:5516] 321585 50722 400085 287968 138301 ... 

Ce qui pourrait être à l'origine de ce problème?

+2

Y a-t-il des valeurs NA dans les données? –

+2

ajouter 'na.rm = T'' mean (téléchargement attdf $, na.rm = T) ' – Wen

+1

mean (téléchargement attdf $, na.rm = TRUE) –

Répondre

1

D'autres ont souligné cela avec leurs commentaires, je peux donner une explication "plus complète" ici.

Quand vous regardez les pages de manuel d'aide à l'aide ?mean vous obtiendrez la description, cette info:

Utilisation

moyenne (x, ...)

## par défaut méthode S3: moyenne (x, trim = 0, na.rm = FAUX, ...)

regarder sous le sec "Arguments" tion, vous verrez ceci:

na.rm
une valeur logique indiquant si NA valeurs doivent être dépouillés avant que le calcul de>.

Cela vous indique que la valeur par défaut pour mean est de pas bande sur NA de, ce qui conduira à une moyenne de NA si vos données contient NA de.

Si vous voulez une moyenne numérique calculée lorsque vous avez NA valeurs (ce qui est correct, compte tenu du fait que vous avez NA de ... quelque chose qui est pas toujours vrai !!!) vous utiliseriez mean avec l'argument na.rm = TRUE.