如何用逗号作为小数点分隔符读取数字?

问题描述

| 我有一系列CSV文件,其中数字使用逗号而不是小数点(即
0,5
而不是
0.5
)以欧洲风格格式化。 这些文件太多,无法在导入到R中之前对其进行编辑。我希望对
read.csv()
函数一个简单的参数,或者希望有一种方法应用于提取的数据集,以使R将数据视为数字而不是一个字符串。     

解决方法

当您勾选
?read.table
时,您可能会找到所需的所有答案。 (大陆)欧洲csv文件存在两个问题: csv中的ѭ4代表什么?对于标准csv,这是
,
,对于欧洲csv,这是
;
sep
read.table
中的对应自变量 小数点的字符是什么?对于标准csv,这是
.
,对于欧洲csv,这是
,
dec
read.table
中的对应自变量 要阅读标准csv,请使用
read.csv
,要阅读欧洲的csv,请使用
read.csv2
。这两个函数只是对
read.table
的包装,它们设置了适当的参数。 如果您的文件不符合这两个标准之一,请手动设置参数。     ,来自
?read.table
dec     the character used in the file for decimal points.
是的,您也可以将其用于
read.csv
。 (对我来说:没有愚蠢,你不能!) 另外,您也可以使用
read.csv2
假设使用\“,\”小数点分隔符,并使用\“; \”表示列分隔符。     ,
read.csv(...,sep=\";\")
假设此导入的字段称为\“ amount \”,如果您将数字作为字符读入,则可以通过这种方式固定类型:
d$amount <- sub(\",\",\".\",d$amount)
d$amount <- as.numeric(d$amount)
从excel或excel csv导入时,我经常会遇到这种麻烦以及其他一些烦恼。似乎没有一致的方法可以确保导入R时获得期望的结果,事后修补似乎是最好的方法。我的意思是,请查看您导入的内容-确保它是您期望的,如果没有,请进行修复。     ,可以如下使用: mydata <-read.table(fileIn,dec = \“,\”) 输入文件(fileIn): D:\\ TEST>更多input2.txt 2014年6月5日09:19:38 3,182534 0 2014年6月5日09:19:51 4,2311 0     ,如果您指出缺失值的表示方式(na.strings = ...),也可能会解决问题。例如,此处的V1和V2具有相同的格式(在csv文件中,小数用\“,\”分隔),但是由于NA出现在V1中,因此将其解释为因素:
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
这也防止将字符列转换为因数     ,只是为了补充上述Brandon的答案,这对我来说很有效(我没有足够的代表对此发表评论): 如果您正在使用
    d$amount <- sub(\",d$amount)
    d$amount <- as.numeric(d$amount)
不要忘记,您可能需要ѭ25才能避开ѭ9字符。