将R中的欧洲数字格式转换为美国数字格式



我正在尝试使用一个保存为.csv文件的文件,但实际上是;脱落。小数点是逗号。一行示例:

SAA1;6022367813;109403136;5807354922;3169925001;3807354922;8636624621;5247927513;5459431619;909011242;4247927513;4087462841;5247927513;4584962501;1117492568;4754887502;6857980995;7409390936;7499845887;8224001674;1019967234;9638435914;4700439718;614974712;2807354922;0;7348728154;4700439718;6820178962;4700439718;6044394119;1584962501;6044394119;6375039431;3807354922;9087462841;874819285;5614709844;8330916878;662935662;516992501;6442943496;2321928095;8312882955;9240791332;2807354922;906608919;6539158811;564385619;4584962501;6700439718;6108524457;7539158811;6658211483;8982993575;5285402219;8744833837

我需要将这些数据读取到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) 

这也没有奏效。(我一点也不惊讶,我已经绝望了。(

我做错了什么?我该怎么修?

一个常见问题与数字前后的尾随空格有关(例如"342,5",而不是"342,5"(。您是否尝试过使用strip.white=TRUE参数,如:

read.csv2("filename.csv", row.names=1, sep=";", strip.white=TRUE)

如果您以其他方式预处理数据,trimws()在这种情况下可能也很有用。

最新更新