我已经从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”必须为数字
我迷路了。我也是这个的初学者,因此我愿意在这里提出建议。请为我哑巴。
答案 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
。