Conditionnel moyenne de la déclaration
J'ai un dataset nommé bwght
qui contient la variable cigs
(cigarattes fumées par jour)
Quand j'ai calculer la moyenne de cigs
dans le jeu de données bwght
à l'aide de:
mean(bwght$cigs)
, Je reçois un certain nombre de 2,08.
Seulement 212 de la 1388 femmes dans l'échantillon de la fumée (1176 ne fume pas):
summary(bwght$cigs>0)
donne le résultat:
Mode FALSE TRUE NA's
logical 1176 212 0
Je suis demandé de trouver le moyen de cigs
parmi les femmes qui fument (212).
Je vais avoir un moment difficile de trouver la bonne syntaxe pour exclure les non-fumeurs = 0
J'ai essayé:
mean(bwght$cigs| bwght$cigs>0)
mean(bwght$cigs>0 | bwght$cigs=TRUE)
if (bwght$cigs > 0){
sum(bwght$cigs)
}x <-as.numeric(bwght$cigs, rm="0");
mean(x)
Mais rien ne semble fonctionner! Quelqu'un peut-il m'aider??
J'ai utilisé votre question en tant que R question, qui va l'aider à obtenir une certaine attention supplémentaire. Je vais écrire une réponse pour vous maintenant.
OriginalL'auteur user1626092 | 2012-09-23
Vous devez vous connecter pour publier un commentaire.
Si vous voulez exclure les non-fumeurs, vous avez quelques options. Le plus simple est probablement ce:
Avec une trame de données, la première variable est la ligne et la prochaine est la colonne. Ainsi, vous pouvez sous-ensemble à l'aide de
dataframe[1,2]
pour obtenir la première ligne, deuxième colonne. Vous pouvez également utiliser la logique dans la ligne de sélection. En utilisantbwght$cigs>0
comme premier élément, vous êtes. uniquement les lignes oùcigs
n'est pas zéro.Vos autres n'a pas de travail pour les raisons suivantes:
C'est effectivement une logique de comparaison. Vous allez avoir un VRAI /FAUX résultat de
bwght$cigs OR bwght$cigs>0
, et puis en prenant la moyenne sur elle. Je ne suis pas totalement sûr, mais je pense que R ne peut même pas prendre les données saisies en tant que logique de lamean()
fonction.Même problème. Vous utilisez le
|
signe, qui renvoie à une logique, et R est d'essayer de prendre la moyenne des partitions logiques contenues.Par hasard, avez-vous été un SAS programmeur à l'origine? Cela ressemble à la façon dont j'ai l'habitude de taper en premier. Fondamentalement,
if()
ne fonctionne pas de la même manière dans les R comme il le fait dans le SAS. Dans cet exemple, vous utilisezbwght$cigs > 0
que la condition if qui ne fonctionne pas, car la R ne regarder que le premier élément du vecteur résultant de bwght$cigs > 0. R poignées en boucle différemment de SAS - découvrez des fonctions comme lapply, tapply, et ainsi de suite.Honnêtement, je ne sais pas ce que cela ferait. Il pourrait fonctionner si
rm="0"
ne pas avoir des devis...?OriginalL'auteur TARehman
J'ai trouvé la déclaration d'échec, le retour "l'argument n'est pas numérique ou logique: le retour de NA"
La conversion de la matrice résolu ce problème:
OriginalL'auteur Grant