• R语言已解决
  • [已解决]csv 逗号分隔的数据文件,用read.csv函数读取,但是有两项挤到一起了

csv 逗号分隔的数据文件,用read.csv函数读取,但是有两项挤到一起了,并没有真的按逗号分隔,怎么办?求助

数据源就是csv文件,我没法改,下面是代码和输出结果

files <- list.files(path = "./data/")  # 我在目录下有一堆csv文件
get_data <- function(i){
  path_to_file <- paste0("./data/",files[i])
  tempdat <- read.csv( file = path_to_file, header = TRUE,
                      encoding = "UTF-8",sep = ",",stringsAsFactors = FALSE)
}
mydata <- data.table::rbindlist( lapply( seq( length(files) ) , get_data  ) )   
             province city minute
   1:      黑龙江,大庆   41     NA
   2: 黑龙江,牡丹江,43   NA     NA
   3:  内蒙古,锡林浩特   46     NA
   4:      黑龙江,富锦   58     NA
   5:  内蒙古,呼伦贝尔   42     NA
  ---                             
3525:      内蒙古,赤峰   28     NA
3526:  内蒙古,准格尔旗   50     NA
3527: 黑龙江,佳木斯,55   NA     NA
3528: 黑龙江,七台河,53   NA     NA
3529:      黑龙江,嘉荫   48     NA

你的数据用文本编辑器打开看看,是不是有引号?
试试'quote=F'?

    > tempdat <- read.table(file = path_to_file,header = TRUE,
    +                       encoding = "UTF-8",sep = ",",
    +                       colClasses = c("character","character","integer"), 
    +                       stringsAsFactors = FALSE,fill = FALSE)
    Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : 
      line 4 did not have 3 elements

    我如果设置 fill=FALSE 又出现上述错误,说第四行没有三个元素,实际上我的 csv文件都是完整的记录

    用xls打开是乱码的(乱码已解决),在xls里可以看见,第四行是有问题的

    但是用notepad++看不出问题

    加colClasses = ‘character’参数

    Cloud2016 这个文件是你出问题的文件吗?我读起来没问题啊:

    read.csv("demo.csv")
    #        ISP avg_url_rt      hit
    # 1     电信     291.87 38755272
    # 2     联通     263.55 18618777
    # 3     移动     340.50 15507909
    # 4     铁通     325.41   931848
    # 5 珠江宽频     297.03   532426
    # 6   教育网     361.03   240959
    # 7     歌华     330.91    31394
    # 8 方正宽带     320.08    15751
    # 9     广电     614.26     3554

      yihui 我都快崩溃了,就是出问题,传到github上预览,一点问题都没有,难道是我的电脑,RStudio,R都抽风了!!

      > dat <- read.csv("demo.csv",header = T,encoding = "UTF-8")
      > dat
                  ISP  avg_url_rt      hit
      1          电信      291.87 38755272
      2   联通,263.55 18618777.00       NA
      3          移动      340.50 15507909
      4   铁通,325.41   931848.00       NA
      5      珠江宽频      297.03   532426
      6 教育网,361.03   240959.00       NA
      7          歌华      330.91    31394
      8      方正宽带      320.08    15751
      9          广电      614.26     3554
      > sessionInfo()
      R version 3.4.1 (2017-06-30)
      Platform: x86_64-w64-mingw32/x64 (64-bit)
      Running under: Windows >= 8 x64 (build 9200)
      
      Matrix products: default
      
      locale:
      [1] LC_COLLATE=Chinese (Simplified)_China.936 
      [2] LC_CTYPE=Chinese (Simplified)_China.936   
      [3] LC_MONETARY=Chinese (Simplified)_China.936
      [4] LC_NUMERIC=C                              
      [5] LC_TIME=Chinese (Simplified)_China.936    
      
      attached base packages:
      [1] stats     graphics  grDevices utils     datasets  methods  
      [7] base     
      
      loaded via a namespace (and not attached):
      [1] compiler_3.4.1 tools_3.4.1   
      Cloud2016 更改标题为「[已解决]csv 逗号分隔的数据文件,用read.csv函数读取,但是有两项挤到一起了
      2 年 后