r - 带有逗号分隔值的read.table,每个元素内也包含逗号

标签 r csv split 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]] )

最佳答案

您需要使用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,]

它提供了更好的格式。

关于r - 带有逗号分隔值的read.table,每个元素内也包含逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19400282/

相关文章:

arrays - 将字符串数组解析为 Int 矩阵

java - 从 csv 文件打印特定行

c - 将立体声流拆分为两个单声道流

r - svd 插补 R

r - 使用 ggsn 添加指北针和比例尺

r - 如何 `unnest` 两个不兼容的嵌套 tibble 列?

r - 如何绘制联锁环?

python - 如何使用一个主键将不同的 CSV 文件合并到一个新的 CSV 文件中

csv - Azure 数据工厂 - CSV 中带引号的字符串在 SQL Server 接收器中不会被视为 NULL 值

带有正则表达式的 Java String.split()