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

时间:2013-02-04 12:46:06

标签: r excel import

我有问题。说我有一个向量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我做错了?

最好的问候

2 个答案:

答案 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