2014-08-31 61 views
5

我有一個問題,當在R中使用as.numeric函數時如何避免NA如您在下面看到的,我有一個字符變量(但它的值是數字)cumulative_viewers, ,我想通過as.numeric將它轉換爲數字,但它不能正常工作。 問題是當數值的位數超過四位數時,即使值爲數字,as.numeric函數也會返回NA。 例如,as.numeric功能在'999'或'999999'的位數超過四位時與'999'或'997'值相符合BUT ,則as.numeric函數不會返回NA =.=;;;;;;;;;;;;其真正的數值....如何避免「警告消息:通過強制引入的NAs」as.numeric()

任何人都可以請幫我解決這個問題? 我發了一天來處理它,但不能有一個答案了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 
+0

他們全部整數?有沒有十進制數字?小於1的數字等? – 2014-08-31 15:55:52

回答

3

在我看來,就好像在你的數據中的逗號的問題。可能有幾十種處理方式。

這裏有一個

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

這不是真的位數的問題,只是一個事實,即具有四個或更多位數的數字對他們有逗號:

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