繁体   English   中英

无法将系数转换为R中的数值

[英]Cant convert factor to numeric in R

我试过了:

  • i <- as.numeric(as.character(Impress))

  • i <- as.numeric(as.character(levels(Impress)))

  • i <- as.numeric(paste(Impress))

我总是得到:

Warning message:
NAs introduced by coercion 
> i
 [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

这是我想要数字化的数据:

> Impress
 [1]  24,085,563.00   35,962,587.00   31,714,513.00   28,206,422.00   40,161,010.00   36,292,929.00   31,545,482.00 
 [8]  28,213,878.00   35,799,224.00   32,400,885.00   28,496,459.00   37,456,344.00   38,108,667.00   33,407,771.00 
[15]  32,540,479.00   30,692,707.00   22,873,000.00   21,329,146.00   28,921,953.00   30,471,519.00   28,601,289.00 
[22]  27,450,630.00   26,708,790.00   19,825,041.00   18,844,169.00   29,592,039.00   31,012,594.00   28,792,531.00 
[29]  28,578,028.00   24,913,985.00 
30 Levels:  18,844,169.00   19,825,041.00   21,329,146.00   22,873,000.00   24,085,563.00   24,913,985.00  ...  40,161,010.00 

> paste(Impress)
 [1] " 24,085,563.00 " " 35,962,587.00 " " 31,714,513.00 " " 28,206,422.00 " " 40,161,010.00 " " 36,292,929.00 " " 31,545,482.00 "
 [8] " 28,213,878.00 " " 35,799,224.00 " " 32,400,885.00 " " 28,496,459.00 " " 37,456,344.00 " " 38,108,667.00 " " 33,407,771.00 "
[15] " 32,540,479.00 " " 30,692,707.00 " " 22,873,000.00 " " 21,329,146.00 " " 28,921,953.00 " " 30,471,519.00 " " 28,601,289.00 "
[22] " 27,450,630.00 " " 26,708,790.00 " " 19,825,041.00 " " 18,844,169.00 " " 29,592,039.00 " " 31,012,594.00 " " 28,792,531.00 "
[29] " 28,578,028.00 " " 24,913,985.00 "

当我做i<-as.numeric(Impress) ,它粘贴了错误的值。

谢谢!

由于数据包含逗号,因此R无法将其转换为数字。 您必须先用sub()删除逗号,然后进行转换:

i <- as.numeric(gsub(",", "", as.character(impress)))

至于电脑而言, ,是不是数字,因此包含它不能是数字,任何数字字符串,即使一个人的这些模样完全可以接受的数字。

摆脱,然后它将起作用,例如使用gsub()

i <- as.numeric(gsub(",", "", as.character(Impress)))

例如

Impress <- c("24,085,563.00", "35,962,587.00", "31,714,513.00", "28,206,422.00")
gsub(",", "", as.character(Impress))
i <- as.numeric(gsub(",", "", as.character(Impress)))
i

R> gsub(",", "", as.character(Impress))
[1] "24085563.00" "35962587.00" "31714513.00" "28206422.00"
R> i
[1] 24085563 35962587 31714513 28206422
R> is.numeric(i)
[1] TRUE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM