read.table,逗号分隔值以及每个元素内的逗号

nop*_*eva 6 csv split r read.table

我正在尝试从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]] )
Run Code Online (Sandbox Code Playgroud)

Sim*_*lon 11

你需要利用quote =其中一个read.tableread.delim...... 的论证

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

分离器","不是"\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
Run Code Online (Sandbox Code Playgroud)

res像这样设置后面的列名...

names( res ) <- res[1,]; res <- res[-1,]
Run Code Online (Sandbox Code Playgroud)

它提供了更好的格式.