如何避免 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”[重复]的主要内容,如果未能解决你的问题,请参考以下文章