在R中将字符的excel输出转换为数字

我有个问题。 说我有一个向量x:

x

  [1] "2 416" "143" "280" "2 503" "144" "128" "55" "697" "826" "9" "35" "9 257" "234" "2 044" NA "219" [17] NA NA "219" "7 431" "82" "88" "186" "231" "192" "456" "585" "75" "142" NA NA NA [33] "72" "246" "900" "143" "231" "195" "282" "226" "967" "247" "2 252" "694" "64" "7 744" "204" "428" [49] "19" "94" "174" "292" "94" "172" "221" "123" "404" "385" "324" "346" "658" "53" "377" "119" [65] NA "51" "391" "1 072" "387" "1 742" "518" "173" "366" "67" "163" "1 151" "382" "864" "184" "172" [81] NA "538" "39" "2 272" "334" "464" "82" "112" class(x) "character" 

我从Excel导入这个向量

 x=read.csv(file="C:/Users/Documents/x.csv",header=TRUE,sep=";",na.strings=c("NA",""), dec = ",",stringsAsFactors=FALSE,blank.lines.skip = F) 

不,当我尝试将x转换为数字时,会发生这种情况:

 as.numeric(x) [1] NA 143 280 NA 144 128 55 697 826 9 35 NA 234 NA NA 219 NA NA 219 NA 82 88 186 231 192 456 585 75 142 NA NA NA 72 [34] 246 900 143 231 195 282 226 967 247 NA 694 64 NA 204 428 19 94 174 292 94 172 221 123 404 385 324 346 658 53 377 119 NA 51 [67] 391 NA 387 NA 518 173 366 67 163 NA 382 864 184 172 NA 538 39 NA 334 464 82 112 Warning message: NAs introduced by coercion 

因此,一些数字,即“2 416”被转换为NA,而我想要的数字被转换为2 416.我要R将"2 416"解释为数字值2416我在做什么错了?

最好的祝福

在进行转换之前,必须用空stringreplace空格:

 x <- c("2 416", "143", "280", "2 503") 

即时转换失败,因为“2 416”不是一个数字:

 as.numeric(x) [1] NA 143 280 NA Warning message: NAs introduced by coercion 

使用gsub()来replace空string的空格,然后转换:

 as.numeric(gsub(" ", "", x)) [1] 2416 143 280 2503 

使用stringr

你可以做类似的事情

 library(stringr) > as.numeric(str_replace_all(dat,pattern=' ',replacement='')) [1] 2416 143 280 2503 144 128 55 697 826 9 35 9257 234 2044 NA 219 NA NA 219 7431 82 88 186 231 192 456 585 75 142 [30] NA NA NA 72 246 900 143 231 195 282 226 967 247 2252 694 64 7744 204 428 19 94 174 292 94 172 221 123 404 385 [59] 324 346 658 53 377 119 NA 51 391 1072 387 1742 518 173 366 67 163 1151 382 864 184 172 NA 538 39 2272 334 464 82 [88] 112