簡體   English   中英

最優雅的方式加載csv點與R中的千位分隔符

[英]Most elegant way to load csv with point as thousands separator in R

注意:據我所知,這個問題並不重復! 我找到的所有問題/答案要么是如何從已經在R中的數據中消除點,要么在加載時如何將小數點更改為逗號。

我有一個csv,數字如: 4.123,98 問題是因為. 使用read.tableread.csvread.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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM