R 中的 CSV 文件导入
CSV file import in R
我正在尝试将 CSV 文件导入 R 以使用 linear/logistic 回归进行欺诈分析。本来应该很容易的事情变得很复杂……这个数据集包含 26 个变量和超过 200 万行。我使用此命令行导入 CSV 文件:
data <- read.csv('C:/Users/amartinezsistac/OneDrive/PROYECTO/decla_cata_filtrados.csv',header=TRUE,sep=";")
尽管如此,R 仅在 1 个变量中导入了 230 万行。我附上此步骤后获得的 View(data)
的 以获取更多信息。我试过从 sep=";" 切换到 sep="," 使用:
datos <- read.csv('C:/Users/amartinezsistac/OneDrive/PROYECTO/decla_cata_filtrados.csv',header=TRUE,sep=",")
但收到此错误消息:
Error in read.table(file = file, header = header, sep = sep, quote = quote, :
more columns than column names
我尝试将 read.csv 更改为 read.csv2(结果是 230 万行和 1 个变量);或使用 fill=TRUE 选项(结果相同),但导入不正确。我附上另一张在 Excel 中打开的原始 CSV 外观图片。
我提前感谢任何建议或帮助修复它。
将问题分解为您可以检查的步骤 - 最初我会尝试类似
file <- 'C:/Users/amartinezsistac/OneDrive/PROYECTO/decla_cata_filtrados.csv'
read.csv(file, header=F, skip=1, sep=',', nrow=1)
如果这产生了一个有 1 行 26 列的 data.frame,那么你在做生意,如果没有,再次检查 read.csv 的参数,看看是否有任何参数需要为您的文件更改。
现在进展到
read.csv(file, header=T, skip=0, sep=',', nrow=1)
这应该为您提供相同的一行 data.frame,但列名正确 - 如果不正确,请检查 csv 文件第一行中的列数是否正确,或者继续跳过 header 并在读入后分配列名。
现在增加 nrow
,最初增加到 10,然后可能增加 10 倍,直到您读入整个文件,或者遇到问题。使用二进制搜索找到导致问题的确切行,方法是将 nrow
设置为您知道有效的值和直到找到确切的问题行才有效的值之间的中间值。
参考 Excel 中的 csv 以查看此行的特殊之处 - 它是否有奇怪的字符、不匹配的引号、较少的条目...这将影响您解决问题的方式。
重复直到读入整个文件!
从excel截图来看,你文件中的第一行数据有31列;第二个有 29...
我的猜测是您的 csv 文件有一个用于列分隔符的逗号和一个用于小数点分隔符的逗号。您必须通过使小数点和列分隔符不同来将文件重新导出到 csv。
我正在尝试将 CSV 文件导入 R 以使用 linear/logistic 回归进行欺诈分析。本来应该很容易的事情变得很复杂……这个数据集包含 26 个变量和超过 200 万行。我使用此命令行导入 CSV 文件:
data <- read.csv('C:/Users/amartinezsistac/OneDrive/PROYECTO/decla_cata_filtrados.csv',header=TRUE,sep=";")
尽管如此,R 仅在 1 个变量中导入了 230 万行。我附上此步骤后获得的 View(data)
的
datos <- read.csv('C:/Users/amartinezsistac/OneDrive/PROYECTO/decla_cata_filtrados.csv',header=TRUE,sep=",")
但收到此错误消息:
Error in read.table(file = file, header = header, sep = sep, quote = quote, :
more columns than column names
我尝试将 read.csv 更改为 read.csv2(结果是 230 万行和 1 个变量);或使用 fill=TRUE 选项(结果相同),但导入不正确。我附上另一张在 Excel 中打开的原始 CSV 外观图片。
我提前感谢任何建议或帮助修复它。
将问题分解为您可以检查的步骤 - 最初我会尝试类似
file <- 'C:/Users/amartinezsistac/OneDrive/PROYECTO/decla_cata_filtrados.csv'
read.csv(file, header=F, skip=1, sep=',', nrow=1)
如果这产生了一个有 1 行 26 列的 data.frame,那么你在做生意,如果没有,再次检查 read.csv 的参数,看看是否有任何参数需要为您的文件更改。
现在进展到
read.csv(file, header=T, skip=0, sep=',', nrow=1)
这应该为您提供相同的一行 data.frame,但列名正确 - 如果不正确,请检查 csv 文件第一行中的列数是否正确,或者继续跳过 header 并在读入后分配列名。
现在增加 nrow
,最初增加到 10,然后可能增加 10 倍,直到您读入整个文件,或者遇到问题。使用二进制搜索找到导致问题的确切行,方法是将 nrow
设置为您知道有效的值和直到找到确切的问题行才有效的值之间的中间值。
参考 Excel 中的 csv 以查看此行的特殊之处 - 它是否有奇怪的字符、不匹配的引号、较少的条目...这将影响您解决问题的方式。
重复直到读入整个文件!
从excel截图来看,你文件中的第一行数据有31列;第二个有 29... 我的猜测是您的 csv 文件有一个用于列分隔符的逗号和一个用于小数点分隔符的逗号。您必须通过使小数点和列分隔符不同来将文件重新导出到 csv。