关于在R中使用NA
函数时如何避免as.numeric
,我有一个问题
如下所示,我有cumulative_viewers
的字符变量(但其值是数字),
我想通过as.numeric
将其转换为数字,但它无法正常工作。
问题是当数值的位数超过四位时,as.numeric
函数返回NA
,即使值是数字。
例如,as.numeric
功能与' 999'的值很好地配合使用。或者' 997'但
当数字位数超过四位时,例如' 1000'或' 1001'或者' 999999'那么as.numeric
函数返回NA =.=;;;;;;;;;;;;
而不是它的真实数值......
有人可以帮我解决问题吗? 我发了一天来处理它但是还没有答案TT> TT
paste(data_without_duplicates$cumulative_viewers)
[1] "12,983,336" "12,323,294" "11,375,954" "10,917,221" "10,667,700"
[6] "10,292,386" "9,350,192" "9,135,520" "9,001,309" "8,653,415"
[11] "7,784,755" "7,508,976" "7,362,790" "6,959,047" "6,706,543"
.....
[1426] "1,026" "1,024" "1,023" "1,020" "1,017"
[1431] "1,016" "1,013" "1,011" "1,001" "1,000"
[1436] "1,000" "999" "997" "994" "990"
[1441] "989" "988" "984" "982" "979"
[1446] "974" "972" "971" "966" "961"
as.numeric(data_without_duplicates$cumulative_viewers)
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[18] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[35] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
.......
[1395] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[1412] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[1429] NA NA NA NA NA NA NA NA 999 997 994 990 989 988 984 982 979
[1446] 974 972 971 966 961 959 958 957 950 946 941 930 929 911 911 910 910
[1463] 910 907 907 902 898 897 895 892 890 890 889 885 885 883 872 871 868
答案 0 :(得分:16)
这不是数字位数的问题,只是你的四位或更多位数的数字中包含逗号:
N1 <- c("1000", "1,000", "10000", "10,000")
as.numeric(N1)
##
[1] 1000 NA 10000 NA
Warning message:
NAs introduced by coercion
##
> N2 <- gsub(",","",N1)
> as.numeric(N2)
[1] 1000 1000 10000 10000
答案 1 :(得分:4)
我认为数据中的逗号就好了。可能有很多方法可以解决这个问题。
这是一个
x <- c("12,983,336", "12,323,294", "11,375,954", "10,917,221", "10,667,700",
"10,292,386", "9,350,192", "9,135,520", "9,001,309", "8,653,415",
"7,784,755", "7,508,976", "7,362,790", "6,959,047", "6,706,543",
"1,026", "1,024", "1,023", "1,020", "1,017", "1,016", "1,013",
"1,011", "1,001", "1,000", "1,000", "999", "997", "994", "990",
"989", "988", "984", "982", "979", "974", "972", "971", "966",
"961")
as.numeric(gsub(",","",x,fixed=TRUE))