[英]How to read in numbers with a comma as decimal separator?
我有一系列 CSV 文件,其中数字使用逗号而不是小数点以欧洲风格格式化,即0,5
而不是0.5
。
在导入到 R 之前,这些文件太多了,无法对其进行编辑。 我希望read.csv()
function 有一个简单的参数,或者有一种方法可以应用于提取的数据集,以便 R 将数据视为数字而不是字符串。
当您检查?read.table
时,您可能会找到您需要的所有答案。
(大陆)欧洲 csv 文件存在两个问题:
c
中的 c 代表什么? 对于标准 csv 这是一个,
对于欧洲 csv 这是一个;
sep
是read.table
中的对应参数.
, 对于欧洲 csv 这是一个,
dec
是read.table
中的对应参数要阅读标准 csv 使用read.csv
,要阅读欧洲 csv 使用read.csv2
。 这两个函数只是read.table
的包装器,用于设置适当的 arguments。
如果您的文件不遵循这些标准中的任何一个,请手动设置 arguments。
从?read.table
:
dec the character used in the file for decimal points.
是的,您也可以将其用于read.csv
。 (对我来说:不傻,你不能!)
或者,您也可以使用
read.csv2
它假定一个“,”小数分隔符和一个“;” 用于列分隔符。
read.csv(... , sep=";")
假设这个导入的字段称为“金额”,如果您的数字被作为字符读入,您可以通过这种方式修复类型:
d$amount <- sub(",",".",d$amount)
d$amount <- as.numeric(d$amount)
从 excel 或 excel csv 导入时,我经常遇到这种情况以及其他一些小烦恼。 当您导入 R 时,似乎没有一致的方法可以确保获得您期望的结果,因此事后修复似乎是最好的方法。 我的意思是,查看您导入的内容 - 确保它符合您的预期,如果不是,请修复它。
可以如下使用:
mydata <- read.table(fileIn, dec=",")
input file (fileIn):
D:\TEST>more input2.txt
06-05-2014 09:19:38 3,182534 0
06-05-2014 09:19:51 4,2311 0
如果您指出缺失值的表示方式(na.strings=...),问题也可能会得到解决。 例如,这里的 V1 和 V2 具有相同的格式(在 csv 文件中用“,”分隔的小数),但由于 V1 中存在 NA,它被解释为因子:
dat <- read.csv2("...csv", header=TRUE)
head(dat)
> ID x time V1 V2
> 1 1 0:01:00 0,237 0.621
> 2 1 0:02:00 0,242 0.675
> 3 1 0:03:00 0,232 0.398
dat <- read.csv2("...csv", header=TRUE, na.strings="---")
head(dat)
> ID x time V1 V2
> 1 1 0:01:00 0.237 0.621
> 2 1 0:02:00 0.242 0.675
> 3 1 0:03:00 0.232 0.398
也许
as.is=T
这也可以防止将字符列转换为因子
只是为了添加上面布兰登的答案,这对我来说效果很好(我没有足够的代表发表评论):
如果你正在使用
d$amount <- sub(",",".",d$amount)
d$amount <- as.numeric(d$amount)
不要忘记您可能需要sub("[.]", "", d$amount, perl=T)
来绕过.
特点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.