2014-07-11 3 views
0

Mon jeu de données contient 6 colonnes dont Ozone, Temp et Solar.R font partie. Je dois trouver la moyenne des valeurs Solar.R fondée sur la condition $ Ozone> 31 et $ Temp> 90 J'exécute le code ci-dessous, mais il retourne NaNconditions de composition dans une instruction dans R

data<-read.csv("hw1_data.csv",header=TRUE) 
mean(na.omit(data[data$Ozone>31 && data$Temp>90,]$Solar.R)) 

Pls laissez-moi où je me trompe

+0

Publiez les premières lignes du fichier .csv ou quelque chose comme ça. Avez-vous vérifié vos données pour l'étrangeté avant de le lire dans R? Avez-vous vérifié dans R pour vous assurer que les données ont été lues correctement? – shadowtalker

+0

Oui tout était OK, réponse correcte posté ci-dessous. Thnx – Arin

Répondre

1

Vous avez une à plusieurs esperluettes là-dedans.

Essayez:

mean(na.omit(data[data$Ozone > 31 & data$Temp > 90, ]$Solar.R)) 

De la page d'aide à ?"&&":

& et && indiquent logique AND et | et || indiquent OR logique. La forme la plus courte effectue des comparaisons élément par élément de la même manière que les opérateurs arithmétiques. La forme la plus longue évalue de gauche à droite en examinant seulement le premier élément de chaque vecteur. L'évaluation continue seulement jusqu'à ce que le résultat soit déterminé. La forme la plus longue convient à la programmation du flux de contrôle et est généralement préférée dans les clauses if.


Soit dit en passant, cela semble à peu près comme l'ensemble de données "de airquality" qui est déjà disponible en R:

mean(na.omit(airquality[airquality$Ozone > 31 & 
          airquality$Temp > 90, ]$Solar.R)) 
# [1] 212.8 

Oh, et ne pas en utilisant l'espace- barre faire code beaucoup plus facile sur les yeux?

+0

Merci, c'était rapide et précis. Acceptez tous les commentaires de votre part. Je griffonnais et collais immédiatement le code. Prendra soin de l'avenir. – Arin

+0

@Arin, Pas de problème. Bienvenue à SO :-) – A5C1D2H2I1M1N2O1R2T1

Questions connexes