2016-09-14 175 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的更新会尝试使用其他功能 –