我正在尝试使用一个保存为.csv文件但实际上是;被淘汰。小数点是逗号。 行示例:
SAA1; 6,022367813; 10,9403136; 5,807354922; 3,169925001; 3,807354922; 8,636624621; 5,247927513; 5,459431619; 9,09011242; 4,247927513; 4,087462841; 5 ,247927513; 4,584962501; 11,17492568; 4,754887502; 6,857980995; 7,409390936; 7,499845887; 8,224001674; 10,19967234; 9,638435914; 4,700439718; 6,14974712; 2,807354922 ; 0; 7,348728154; 4,700439718; 6,820178962; 4,700439718; 6,044394119; 1,584962501; 6,044394119; 6,375039431; 3,807354922; 9,087462841; 8,74819285; 5,614709844 ; 8,330916878; 6,62935662; 5,169925001; 6,442943496; 2,321928095; 8,312882955; 9,240791332; 2,807354922; 9,06608919; 6,539158811; 5,64385619; 4,584962501; 6 ,700439718; 6,108524457; 7,539158811; 6,658211483; 8,982993575; 5,285402219; 8,744833837
我需要将此数据读入R,然后将其用作小数点为“。”的数字。
这是我尝试过的:
read.csv2("filename.csv", row.names=1, sep=";",dec=",")
这几乎奏效。大部分数字都正确地加上了句号。但是,某些列中的所有数字仍以逗号分隔。我试图用以下方法解决此问题:
temp<-sub(",", ".", data)
但是,这不太奏效。它截断了几个数字,并完全破坏了其他数字。我不知道为什么。
我也尝试过用Sublime文本打开文件。我找到了所有逗号并将其替换为句点。这再次适用于大多数数据,但几个数字再次损坏。
我也尝试在不更改逗号分隔性质的情况下读取文件,将其写成句号,然后再次读取。
temp<-read.csv2("filename.csv", row.names=1, sep=";")
write.csv2(temp, "filename_edited", sep = ";", dec=".", row.names = TRUE, col.names = TRUE)
temp2 <- read.csv2("filename_edited", sep=";", row.names=1)
这也不起作用。 (我并不感到惊讶,我感到绝望。)
我在做什么错?我该如何解决?
答案 0 :(得分:0)
一个常见问题与数字前后的空白有关(例如,“ 342,5”而不是“ 342,5”)。您是否尝试过使用strip.white=TRUE
参数,例如:
read.csv2("filename.csv", row.names=1, sep=";", strip.white=TRUE)
如果您另外对数据进行预处理,那么trimws()
在这种情况下也可能有用。