NB: 就我所知,这个问题不是一个重复的问题! 我找到的所有问题/答案要么是如何从已经在R中的数据中消除点,要么是当加载时如何将小数点改为逗号。
我有一个带有数字的csv文件,例如:4.123,98
。问题是由于.
,当使用read.table
、read.csv
或read.csv2
进行加载时,输出变成了一个字符串矩阵。将dec
更改为,
也没有帮助。
我的问题是:
如何以最优雅的方式加载此csv文件,以使数字变为例如4123.98
作为数字?
NB: 就我所知,这个问题不是一个重复的问题! 我找到的所有问题/答案要么是如何从已经在R中的数据中消除点,要么是当加载时如何将小数点改为逗号。
我有一个带有数字的csv文件,例如:4.123,98
。问题是由于.
,当使用read.table
、read.csv
或read.csv2
进行加载时,输出变成了一个字符串矩阵。将dec
更改为,
也没有帮助。
我的问题是:
如何以最优雅的方式加载此csv文件,以使数字变为例如4123.98
作为数字?
参考自此帖子:在read.table / read.csv的colClasses参数中指定自定义日期格式
#some sample data
write.csv(data.frame(a=c("1.234,56", "1.234,56"),
b=c("1.234,56", "1.234,56")),
"test.csv", row.names=FALSE, quote=TRUE)
#define your own numeric class
setClass('myNum')
#define conversion
setAs("character", "myNum",
function(from) as.numeric(gsub(",", "\\.", gsub("\\.", "", from))))
#read data with custom colClasses
read_data = read.csv("test.csv",
stringsAsFactors=FALSE,
colClasses=c("myNum", "myNum"))
#let's try whether this is really a numeric
read_data[1, 1] * 2
#[1] 2469.12
不要试图在加载时完全修复它,我会将数据作为字符串加载到 R 中,然后将其转换为数字进行处理。
因此,在加载后,它是一列字符串,例如“4.123,98”
然后可以执行以下操作:
number.string <- gsub("\\.", "", number.string)
number.string <- gsub(",", "\\.", number.string)
number <- as.numeric(number.string)