首页 文章

将.csv文件加载到RStudio时出现问题 . 引用字符串中的EOF

提问于
浏览
0

当我将这个文件Chicago_Crimes_2005_to_2007.csv(Link https://www.kaggle.com/currie32/crimes-in-chicago)加载到RStudio时,我总是收到错误(Warnmeldung:在扫描中(文件=文件,什么=什么,sep = sep,quote = quote,dec = dec,:EOF in Zeichenkette /英语:引用字符串中的EOF),并不包括所有obervations . 你知道如何解决这个问题吗?使用其他3个文件我没有问题 . 我使用的代码如下:

c2 = read.csv("Chicago_Crimes_2005_to_2007.csv", header = TRUE)

我尝试使用此代码修复它:

c2 = read.csv("Chicago_Crimes_2005_to_2007.csv", header = TRUE, quote = "", row.names = NULL, stringsAsFactors = FALSE).

没有成功 . 我在stackoverflow中尝试了所有答案,但错误相同 . 什么都没有帮助 . 自1周以来没有成功 . 希望有人可以帮助我 . 在RStudio中使用R.

2 回答

  • 0

    干得好:

    require(tidyverse)
    df <- readr::read_csv("Chicago_Crimes_2005_to_2007.csv")
    

    您可能决定清理列名,因为有些列中有空格,如果是这样的话:

    colnames(df) <- c("rowNo",
                       "ID",
                       "Case.Number",
                       "Date",
                       "Block",
                       "IUCR",
                       "Primary.Type",
                       "Description",
                       "Location.Description",
                       "Arrest",
                       "Domestic",
                       "Beat",
                       "District",
                       "Ward",
                       "Community.Area",
                       "FBI.Code",
                       "X.Coordinate",
                       "Y.Coordinate",
                       "Year",
                       "Updated.On",
                       "Latitude",
                       "Longitude",
                       "Location")
    
  • 0

    这是一个读取脚本的版本,它解析文件第一行中的列名称,使用 tidyr::gather()gsub() 的组合清除它们,并将它们用作 read::read_csv() 的输入 . 然后汇总 Row.Number 字段以确认其最大值6254267与文件中最后一行的行号匹配 .

    library(readr)
    library(tidyr)
    # read first row and clean column names
    colNamesData <- read_csv("./data/Chicago_Crimes_2005_to_2007.csv",col_names=FALSE,n_max=1)
    # set NA to Row Number
    colNamesData[1,1] <- "Row Number"
    # use tidyr::gather() to turn rows into columns
    xColNames <- gather(colNamesData)
    # use gsub() to replace blanks with periods so data can be used as column names
    xColNames$value <- gsub(" ",".",xColNames$value)
    # read with readr::read_csv() and set column names to data extracted from first row
    # skip first row because it contains bad column names and is missing the first column name 
    crimeData <- read_csv("./data/Chicago_Crimes_2005_to_2007.csv",col_names=xColNames$value,skip=1)
    # last row in file is row number 6254267
    summary(crimeData$Row.Number)
    

    ......和输出:

    > summary(crimeData$Row.Number)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
          0  235792  471370 1944429 5601310 6254267 
    >
    

    NOTE: 该文件未正确读取所有记录,因为在第533,719行,记录似乎以冗余的变量名列表结尾 .

    要纠正这个问题,必须手动编辑数据以删除变量名称的冗余列表或错误周围的代码 .

    有趣的是,行数计数在原始数据文件的第533,720行中重新开始,这表示创建此数据的人不正确地连接多个文件以创建此数据文件 .

相关问题