首页 文章

如何避免在as.numeric()[复制]中出现“警告消息:由强制引入的NAs”

提问于
浏览
10

这个问题在这里已有答案:

我有一个关于如何在R中使用 as.numeric 函数时避免 NA 的问题 . 如下所示,我有 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

2 回答

  • 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
    
  • 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))
    

相关问题