Read.csv2仅导入因子或字符

时间:2017-04-12 12:52:36

标签: r

我写了一个小程序,通过OnVista导入MSCI World Data(我在yahoo finance上找不到):

library(fImport)
library(fBasiscs)

notation="3193857"
datestart=Sys.Date()-366
interval="Y1"

URL <- composeURL("www.onvista.de/onvista/boxes/historicalquote/export.csv?","notationId=", notation, "&dateStart=", datestart, "&interval=", interval )

data<-read.csv2(URL,header=TRUE,sep=";",dec=",",na.strings=c(""))

我的问题是,无论我在read.csv2函数中的命令如何,R中的genearetd表都有字符或因子。

我的想法是,这是因为第254行导入了空单元格。但即使我将空单元命令为NA,这对整行也不起作用,也不会影响数字列的导入。它们仍然是因素或角色。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

您的问题不是缺失的值,而是数字包含1000s分隔符的事实。您可以阅读function (template) { var jTemplate = $($.parseHTML(template, document, true)); console.log(jTemplate); var content = jTemplate.filter('.page-wrap').contents() .filter('#content-wrapper').contents().filter('#content') .contents().filter('#main-content'); console.log(content); $("agency-journal-content").replaceWith(content); } 并转换相关列,也可以按照以下链接中的建议定义新的类定义:

这里我们定义一个新类,首先删除句点(1000分隔符),然后将逗号转换为句点。

data.frame

这导致

setClass("MyNum")
setAs("character", "MyNum", 
       function(from) as.numeric(gsub(",", ".", gsub("\\.", "", from) ) ))
indata <- read.csv2(URL, sep=";", dec=",", 
                    colClasses=c("character", rep("MyNum", 4), "numeric"))

并且类是

head(indata)
         Datum Eroeffnung    Hoch    Tief Schluss Volumen
1   11.04.2016    1632.14 1632.14 1632.14 1632.14       0
2   12.04.2016    1644.21 1644.21 1644.21 1644.21       0
3   13.04.2016    1666.16 1666.16 1666.16 1666.16       0
4   14.04.2016    1671.96 1671.96 1671.96 1671.96       0
5   15.04.2016    1670.46 1670.46 1670.46 1670.46       0
6   18.04.2016    1675.32 1675.32 1675.32 1675.32       0