我有一个关于如何在R中NA使用as.numeric函数时避免的问题.如下所示,我有一个字符变量(但它的值是数字)cumulative_viewers,我想将它转换为数字,as.numeric但它无法正常工作.问题是当数值的位数超过四位as.numeric时,NA即使值是数字,函数也会返回.例如,as.numeric函数与'999'或'997'的值很好地工作但是当位数超过4时,例如'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
Run Code Online (Sandbox Code Playgroud)
nru*_*ell 18
这不是数字位数的问题,只是你的四位或更多位数的数字中有逗号:
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
Run Code Online (Sandbox Code Playgroud)
在我看来,数据中的逗号似乎是问题所在。可能有几十种处理方法。
这是一个
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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50842 次 |
| 最近记录: |