2014-09-28 32 views
0

我有一个CSV文件。它位于scikit.learn库中。在使用python构建任何预测模型之前,我想看看每个属性与关键属性的关联。所以,我进口CSV file像这样:当转换为data.matrix的numeric data.frame时,R对csv做了什么?

y <-read.csv("boston_house_prices.csv") 

现在,我似乎无法执行任何描述性统计数据,或运行COR(Y [1:13],Y [14])。它说'x'不是数字。我曾尝试:

y <- as.data.frame(sapply(y, as.numeric)) 

y <- data.matrix(y) 

现在,数据是数字,我可以运行的相关性。但是,如果我想运行基本的统计数据,那么所有事情都会从发生的“转变”中偏离。有人能告诉我如何保留我的数据本地数字类型,同时能够运行cor()吗?为什么R必须将双/十进制值转换为整数才能运行?

谢谢。

回答

0

在使用read.csv读取数据时,可以使用skip = 1来避免此问题。我从原始数据中抓取了几行,看起来没问题。

第一行是不必要的,它实际上会将标题行向下推入第一行,然后在读取时将列转换为因子。当您使用as.numeric时,实际上是将所有因子值更改为其数值,这些数值与原始数值不同,并且可能不正确。这是你描述的“歪斜”。

txt <- '506,13,,,,,,,,,,,, 
    "CRIM","ZN","INDUS","CHAS","NOX","RM","AGE","DIS","RAD","TAX","PTRATIO","B","LSTAT","MEDV" 
    0.00632,18,2.31,0,0.538,6.575,65.2,4.09,1,296,15.3,396.9,4.98,24 
    0.02731,0,7.07,0,0.469,6.421,78.9,4.9671,2,242,17.8,396.9,9.14,21.6 
    0.02729,0,7.07,0,0.469,7.185,61.1,4.9671,2,242,17.8,392.83,4.03,34.7 
    0.03237,0,2.18,0,0.458,6.998,45.8,6.0622,3,222,18.7,394.63,2.94,33.4' 

您当前的呼叫产生的因素:

sapply(read.csv(text = txt), class) 
#  X506  X13  X  X.1  X.2  X.3  X.4 
# "factor" "factor" "factor" "factor" "factor" "factor" "factor" 
#  X.5  X.6  X.7  X.8  X.9  X.10  X.11 
# "factor" "factor" "factor" "factor" "factor" "factor" "factor" 

skip = 1似乎这样的伎俩,因为它产生的数字列:如果你改变你的第一线,

sapply(read.csv(text = txt, skip = 1), class) 
#  CRIM  ZN  INDUS  CHAS  NOX  RM  AGE 
# "numeric" "integer" "numeric" "integer" "numeric" "numeric" "numeric" 
#  DIS  RAD  TAX PTRATIO   B  LSTAT  MEDV 
# "numeric" "integer" "integer" "numeric" "numeric" "numeric" "numeric" 

所以

y <- read.csv("boston_house_prices.csv", skip = 1) 

一切都应该罚款之后,没有其他必要的转换

+0

这并不是那么明显。它虽然现在工作!这个文件在哪里?我查看了http://cran.r-project.org/doc/manuals/R-data.html,找不到更多的跳过参数。 – leonard 2014-09-28 04:15:55

+0

那么这是一个Python包,所以我不希望这发生在R github数据集上。 'skip'记录在'?read.table'文件中,实际上整个帮助文件是非常有用的 – 2014-09-28 04:18:02

相关问题