如何避免as.numeric()中的"警告信息:由强制引入的NAs"

Jac*_*een 10 r

我有一个关于如何在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)


jal*_*pic 5

在我看来,数据中的逗号似乎是问题所在。可能有几十种处理方法。

这是一个

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)