我想使用cor()函数,但输出显示“ y”必须为数字。问题是,它是数字

时间:2018-11-28 07:37:47

标签: r correlation numeric

我已经从xlsx文件读取数据。我的读取代码像这样开始:

ecommerce<-read.xlsx("C:\\Users\\Thomas Rhee\\Documents\\GGU\\GGU Fall 2018\\Tools for Business Analytics\\Final Project\\ecommerce.xlsx", sheet = "data", startRow = 1, colNames = TRUE, col = c(1,2,3,4,5,6,7,8));
attach(ecommerce)
names(ecommerce)

其中一栏是“价格”。看起来像这样:

price
<chr>
329.98  
324.83999999999997  
324.83  
350 
308 
310

我使用sapply来查找“价格”列中的字符类别。我使用以下代码将其转换为数字:

ecommerce$price <- as.numeric(as.character(ecommerce$price))

我再次检查并成功。我尝试键入以下内容并获得以下输出:

cor(rank, price) 
  

cor(rank,price)的错误:“ y”必须为数字

我迷路了。我也是这个的初学者,因此我愿意在这里提出建议。请为我哑巴。

1 个答案:

答案 0 :(得分:2)

这是一个很好的示例,为什么您不应该使用attach

d <- data.frame(x = 1:3)
attach(d)
x ## now available because of attach
# [1] 1 2 3

d$x <- LETTERS[1:3]
x ## however this still refers to the original values of d$x
# [1] 1 2 3
d$x
# [1] "A" "B" "C"

这意味着,您在数据框中更改了原始数据,但是在您的cor(.)调用中,您引用了原始数据(已附加的数据)

因此,要解决您的问题,请放下attach命令并直接指定列(将它们转换为数字后):

cor(ecommerce$rank, ecommerce$price)

从技术上讲,您可以在更改ecommerce之后再次重新附加它,但是由于这些问题,我强烈不鼓励您完全使用attach