5

我正在尝试从逗号分隔的 csv 文件创建一个表。我知道并非所有行都具有相同数量的元素,因此我会编写一些代码来消除这些行。问题是有些行包含数字(以千计),其中还包含另一个逗号。我无法正确拆分这些行,这是我的代码:

pURL <- "http://financials.morningstar.com/ajax/exportKR2CSV.html?&callback=?&t=EI&region=FRA&order=asc"
res <- read.table(pURL, header=T, sep='\t', dec = '.', stringsAsFactors=F)
x <- unlist( lapply(keyRatios, function(u) strsplit(u,split='\n')) [[1]] )
4

1 回答 1

10

您需要使用 or 的quote =论点read.tableread.delim...

res <- read.delim( pURL, header=F, sep=',', dec = '.', stringsAsFactors=F , quote = "\"" ,   fill = TRUE , skip = 2 )

分隔符","不是"\t"此文件中始终引用写为数以百万计的数字,因此您可以使用quote参数使 R 忽略引号内的逗号quote = "\"",并且您想跳过前两行,并使用fill = TRUE填充不均匀行的空白。

head( res )

#                           2003-12 2004-12 2005-12 2006-12 2007-12 2008-12 2009-12 2010-12 2011-12 2012-12   TTM
#2          Revenue EUR Mil   2,116   2,260   2,424   2,690   2,908   3,074   3,268   3,892   4,190   4,989 5,034
#3           Gross Margin %    60.6    60.3    57.3    58.2    57.6    56.9    56.1    55.5    55.4    55.8  56.1
#4 Operating Income EUR Mil     365     404     394     460     505     515     555     618     683     832   841
#5       Operating Margin %    17.2    17.9    16.2    17.1    17.4    16.7    17.0    15.9    16.3    16.7  16.7
#6       Net Income EUR Mil     200     227     289     331     371     389     402     472     518     584   594
#7   Earnings Per Share EUR    3.90    4.30    5.44    6.22    3.48    3.62    3.78    4.36    4.82    2.77  2.80

我像这样设置之后的列名res......

names( res ) <- res[1,]; res <- res[-1,]

它提供了更好的格式。

于 2013-10-16T10:06:29.943 回答