我有问题。说我有一个向量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
我做错了?
最好的问候
答案 0 :(得分:3)
在进行转换之前,您必须用空字符串替换空格:
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()
用空字符串替换空格,然后转换:
as.numeric(gsub(" ", "", x))
[1] 2416 143 280 2503
答案 1 :(得分:0)
使用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