如何避免 as.numeric() 中的“警告消息:强制引入的 NA”[重复]

Posted

技术标签:

【中文标题】如何避免 as.numeric() 中的“警告消息:强制引入的 NA”[重复]【英文标题】:how to avoid "Warning message: NAs introduced by coercion" in as.numeric() [duplicate] 【发布时间】:2014-08-31 15:25:37 【问题描述】:

我有一个关于在 R 中使用 as.numeric 函数时如何避免 NA 的问题。 正如您在下面看到的,我有一个字符变量(但它的值是数字)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

【问题讨论】:

都是整数吗?有十进制数吗?小于 1 的数字等? 【参考方案1】:

位数不是真正的问题,只是您的四位数或更多位数的数字中有逗号:

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

【讨论】:

【参考方案2】:

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

这里有一个

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

【讨论】:

以上是关于如何避免 as.numeric() 中的“警告消息:强制引入的 NA”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

as.numeric() 删除 R 中的小数位,如何更改?

R 中的 as.numeric 有啥问题? [复制]

如何配置 vscode 以避免有关角度开发的警告

as.numeric 函数更改我的数据框中的值[重复]

如何避免 Rancher RKE Reconcile 警告?

警告消息mayBeLonLat(x):使用R中的裁剪功能,CRS为NA