如何读取包含千个分隔符和特殊零处理的.csv数据(在R中)?

如何读取包含千个分隔符和特殊零处理的.csv数据(在R中)?,r,csv,comma,zero,R,Csv,Comma,Zero,Ubuntu 14.04上的R版本3.2.2 我试图读取包含千位分隔符“,”的R.csv数据(两列:“id”和“variable1”)。 到目前为止没有问题。我使用的是read.csv2,数据如下所示: > data <- read.csv2("data.csv", sep = ";", stringsAsFactors = FALSE, dec = ".") > data[1000:1010, ] id variable1 1

Ubuntu 14.04上的R版本3.2.2

我试图读取包含千位分隔符“,”的R.csv数据(两列:“id”和“variable1”)。 到目前为止没有问题。我使用的是read.csv2,数据如下所示:

> data <- read.csv2("data.csv", sep = ";", stringsAsFactors = FALSE, dec = ".")
> data[1000:1010, ]
     id        variable1
         1     2,001
     1,001     2,002
     1,002     2,001
     1,003     2,002
     1,004     2,001
     1,005     2,002
     1,006     2,001
     1,007     2,002
     1,008     2,001
     1,009     2,002
      1,01     2,001
编辑: 谢谢大家的回答。不幸的是,这些建议适用于这个示例,但不适用于我的数据,因为我认为我选择了错误的示例行。数据中的其他行可以如下所示:

> data[1000:1010, ]
     id      variable1
     1000      2001
     1001      2002
     1002      2001
     1003      2002
     1004      2001
     1005      2002
     1006      2001
     1007      2002
     1008      2001
     1009      2002
     1010      2001
       id1 variable1
1        1     2,001
999    999     1,102
1000     1     2,001
1001 1,001     2,002
1002 1,002     2,001

当然,这个数字是“1”的两倍。第一个是“1”,但第二个应该是“1000”。但现在我认为我无法解决我的R问题。也许我需要更好地导出原始数据,因为问题也出现在.csv数据中

删除逗号后,可以执行以下操作:

data$id <- data$id*(10^(4-nchar(data$id)))
data$id如果“,”是唯一的分隔符,即所有数字都是整数,则可以将
csv2
(或
read.csv
)的
dec
参数设置为“,”并乘以1000:

data <- read.csv2(
  text = "id    ; variable1
          1     ; 2,001
          1,008 ; 2,001
          1,009 ; 2,002
          1,01  ; 2,001
          1,3   ; 2,0",
  sep = ";",
  stringsAsFactors = FALSE,
  header = TRUE,
  dec = "," )

您可以通过在
read.csv
中指定
colClasses=c('character','character')
进行读取吗?不,缺少零的问题已经出现在.csv数据中。所以我当然看不到R中的零,因为它们不在那里。我正在寻找一种解决方案,如“如何添加”R中的零。因此,我猜实际的
1
1000
将仅为1?
读取。csv2
应将
解释为小数点,就像这些数字看起来一样。如果它真的这样解释,你可以乘以1000得到你想要的输出。
data <- read.csv2(
  text = "id    ; variable1
          1     ; 2,001
          1,008 ; 2,001
          1,009 ; 2,002
          1,01  ; 2,001
          1,3   ; 2,0",
  sep = ";",
  stringsAsFactors = FALSE,
  header = TRUE,
  dec = "," )
> 1000*data
    id variable1
1 1000      2001
2 1008      2001
3 1009      2002
4 1010      2001
5 1300      2000
>