2016-09-14 98 views
1

我有這個字符串變量介紹NA到as.numeric

mystr <- "98,015" 

,我想將其轉換爲數字。

於是我就用:

num <- as.numeric(mystr) 

但我收到此錯誤:

Warning message: 
NAs introduced by coercion 

此介紹NA,而不是數量。如果使用像"21"這樣的字符串,我會成功取得該號碼。我能做什麼?

+0

'readr :: parse_number( 「98015」)' – alistaire

回答

1

我們可以使用sub替換,"",然後將其轉換爲numeric。由於,字符,應用as.numeric將其強制轉換爲NA。

as.numeric(sub(",", "", mystr)) 

如果,代表.,然後用.更換(基於@ RHertel的評論)

as.numeric(sub(",", ".", mystr)) 

目前尚不清楚的OP的原始數據集是否是data.frame或只是vector。如果是數據幀,則在使用read.csv/read.table讀取時,我們可以指定dec=","

+0

謝謝。它工作'as.numeric(sub(「,」,「」,mystr))'!我應該怎麼做,如果我有一些像這樣的「1071911」 –

+1

@Jason_K在這種情況下,你可以使用'gsub',而不是'sub'(但是從你的例子,我認爲只有一個單一的「」每次每個號碼 – akrun

0

GSUB功能也做了同樣的

mystr <- c("98,015","10,125","11,456") 

mystr <- as.numeric(gsub("\\,","",mystr)) 

class(mystr) 
[1] "numeric" 
+3

你不需要轉義逗號,除了無用地使用'gsub'而不是'sub'外,與其他答案有什麼不同? – Cath

+1

感謝Cath的更新會嘗試使用其他功能 –