2016-08-04 2 views
-2

En ce moment j'essaye de faire une courbe en cloche sur un fichier appelé output9.csv sur mon.R dans le comptage des données

Voici mon code, je veux utiliser z score pour détecter les valeurs aberrantes, et utilise la différence entre la valeur et la moyenne de l'ensemble de données.La différence est comparée à l'écart-type pour trouver les valeurs aberrantes. va

#DATA LOAD 
data <- read.csv('output9.csv') 
height <- data$Height 

hist(height) #histogram 

#POPULATION PARAMETER CALCULATIONS 
pop_sd <- sd(height)*sqrt((length(height)-1)/(length(height))) 
pop_mean <- mean(height) 

Mais j'ai cette erreur après avoir essayé la partie de l'histogramme,

> hist(height) 
Error in hist.default(height) : 'x' must be numeric 

comment dois-je résoudre ce problème?

Répondre

2

Puisque je n'ai pas vos données, je ne peux que deviner. Pouvez-vous le fournir? Ou au moins une partie de celui-ci?

De quelle classe sont vos données? Vous pouvez utiliser class(data) pour le savoir. La manière la plus courante consiste à avoir des données sous forme de tableau au data.frames. Pour sous-utiliser l'une de vos colonnes pour l'utiliser pour hist, vous pouvez utiliser l'opérateur $. Assurez-vous de sous-ensemble sur une colonne qui existe réellement. Vous pouvez utiliser names(data) (si data est un data.frame) pour savoir quelles colonnes existent dans vos données. Utilisez nrow(data) pour connaître le nombre de lignes présentes dans vos données.

Après avoir extrait votre height vous pouvez aller plus loin. Premièrement, vérifiez que votre objet height est numeric et qu'il contient quelque chose. Vous pouvez utiliser class(height) pour le savoir.

Comme vous avez posté votre commentaire, vous avez les noms suivants

names(data) 
# [1] "Host" "TimeStamp" "TimeZone" "Command" "RequestLink" "HTTP" [7] "ReplyCode" "Bytes" 

Par conséquent, vous pouvez extraire votre height avec

height <- data$Bytes 

Avez-vous essayé de le convertir en numérique? as.numeric(height) pourrait faire l'affaire. as.numeric() peut contraindre toutes les choses qui sont stockées en tant que caractères, mais peut également être des nombres automatiquement. Essayez as.numeric("3") comme exemple.

Voici un exemple que j'ai inventé.

height <- c(1,1,2,3,1) 
class(height) 
# [1] "numeric" 

hist(height) 

Cela fonctionne très bien, car les données sont numériques.

Ci-après, les données sont des nombres mais formatés en caractères.

height_char <- c("1","1","2","3","1") 
class(height_char) 
# [1] "character" 

hist(height_char) 
# Error in hist.default(height) : 'x' must be numeric 

Donc, vous devez d'abord le contraindre:

hist(as.numeric(height_char)) 

..et il fonctionne très bien. Pour des questions futures: Essayez de donner Minimal, Complete, and Verifiable Examples.

+0

hey merci! c'est l'erorr que j'ai après la classe (height): class (height) [1] "NULL" –

+0

aussi je reçois numeric (0) après que j'ai couru le code nmueric –

+0

Donc évidemment il n'y a rien stocké dans votre objet 'height' . Êtes-vous sûr qu'il y a quelque chose dans vos données? Êtes-vous sûr du sous-ensemble que vous faites? – symbolrush