-2

现在我正在尝试在我的名为 output9.csv 的文件上做一个钟形曲线。

这是我的代码,我想使用z分数来检测异常值,并使用数据集的值和均值之间的差异。将差异与标准差进行比较以找到异常值。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)

但是在我尝试了直方图部分后出现了这个错误,

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

我应该如何解决这个问题?

4

1 回答 1

2

由于我没有你的数据,我只能猜测。你能提供吗?或者至少是其中的一部分?

你的数据是什么类?您可以使用class(data)来查找。最常见的方法是在data.frames. 要子集您的列之一以使用它,hist您可以使用$运算符。确保您对实际存在的列进行子集化。您可以使用names(data)(if datais a data.frame) 找出数据中存在哪些列。用于nrow(data)找出数据中有多少行。

提取你的后height,你可以走得更远。首先检查你的height对象是否存在numeric并且里面有东西。您可以使用class(height)来查找。

正如您在评论中发布的那样,您具有以下名称

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

因此你可以提取你height

height <- data$Bytes

您是否尝试将其转换为数字?as.numeric(height)可能会成功。as.numeric()可以强制所有存储为字符但也可能是自动数字的东西。as.numeric("3")举个例子试试。

这是我编的一个例子。

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

hist(height)

这很好用,因为数据是数字的。

以下数据是数字,但格式为字符。

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

所以你必须先强制​​它:

hist(as.numeric(height_char))

..然后它工作正常。

对于未来的问题:尝试给出最少、完整和可验证的示例

于 2016-08-04T06:00:54.623 回答