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

どちらかまたは...のquote =引数を使用する必要があります。read.tableread.delim

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

セパレーターは ではあり","ません"\t"。数千万と書かれた数字は常にこのファイルに引用されているので、quote引数を使用して R に で引用符内のコンマを無視させquote = "\""、最初の 2 行をスキップして、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 に答える