首页 文章

R中的CSV文件导入[关闭]

提问于
浏览
-2

我正在尝试将CSV文件导入到R中,以使用线性/逻辑回归进行欺诈分析 . 应该很简单的是变得复杂......这个数据集包含26个变量和超过200万行 . 我使用此命令行导入CSV文件:

data <- read.csv('C:/Users/amartinezsistac/OneDrive/PROYECTO/decla_cata_filtrados.csv',header=TRUE,sep=";")

尽管如此,R仅在1个变量中导入了230万行 . 我附上了此步骤后获得的 View(data)
image
以获取更多信息 . 我尝试使用以下方法从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外观的另一张图像 .
Original CSV in Excel

我提前感谢任何建议或帮助解决它 .

2 回答

  • 2

    将问题分解为可以检查的步骤 - 最初我会尝试类似的东西

    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文件在第一行中有正确的列数,或继续跳过 Headers 并在阅读后指定列名它在 .

    现在增加 nrow ,最初为10,然后可能是10倍,直到你读完整个文件,或者你遇到问题 . 使用二进制搜索找到导致问题的确切行,方法是将 nrow 设置为您知道的值之间的中间值,直到找到确切的问题行之前的值 .

    请参阅Excel中的csv以查看此行的具体内容 - 它是否具有奇怪的字符,无与伦比的引号,更少的条目...这将影响您解决问题的方式 .

    重复,直到整个文件都读入!

  • 6

    从excel屏幕截图中,文件中的第一行数据有31列;第二个有29 ...我的猜测是你的csv文件有一个用于列分隔符的逗号和一个用于小数分隔符的逗号 . 您必须通过使十进制和列分隔符不同来将文件重新导出到csv .

相关问题