2016-08-09 8 views
1

ist meine Datenwie die Einführung NA zu vermeiden, während numerische Werte abdeckt hier auf ganzzahlige

mydata <- structure(list(GroupA_1 = c(400730000, 0, 0, 0, 4442200000, 0, 
0, 0, 0, 4482700000, 0, 0, 0, 0, 0), GroupA_2 = c(375840000, 
0, 0, 38008000, 7963200000, 0, 0, 0, 164980000, 4102700000, 0, 
0, 0, 0, 89135000), GroupA_3 = c(342230000, 0, 0, 0, 6705700000, 
14662000, 0, 0, 0, 4.665e+09, 0, 0, 0, 0, 0), GroupA_4 = c(311840000, 
0, 0, 0, 4611900000, 0, 0, 0, 148700000, 5108300000, 0, 0, 0, 
0, 123910000)), .Names = c("GroupA_1", "GroupA_2", "GroupA_3", 
"GroupA_4"), class = "data.frame", row.names = c("first1", "first2", 
"first3", "first4", "first5", "first6", "first7", "first8", "first9", 
"first10", "first11", "first12", "first13", "first14", "first15" 
)) 

Mag ich str es die Daten laden

mydata <- read.table("path to mydata.txt", header=TRUE, row.names = 1) 

dann, und ich sehe, dass die Werte der Zahl sind

'data.frame': 15 obs. of 4 variables: 
$ GroupA_1: num 4.01e+08 0.00 0.00 0.00 4.44e+09 ... 
$ GroupA_2: num 3.76e+08 0.00 0.00 3.80e+07 7.96e+09 ... 
$ GroupA_3: num 3.42e+08 0.00 0.00 0.00 6.71e+09 ... 
$ GroupA_4: num 3.12e+08 0.00 0.00 0.00 4.61e+09 ... 

ich versuche, sie zu erhalten, zu konvertieren wie unten

in integer
mydata2 <- data.frame(sapply(mydata, as.integer)) 

die NA in die Daten einführt

Warning messages: 
1: In lapply(X = X, FUN = FUN, ...) : 
    NAs introduced by coercion to integer range 
2: In lapply(X = X, FUN = FUN, ...) : 
    NAs introduced by coercion to integer range 
3: In lapply(X = X, FUN = FUN, ...) : 
    NAs introduced by coercion to integer range 
4: In lapply(X = X, FUN = FUN, ...) : 
    NAs introduced by coercion to integer range 

Wie kann ich meine Daten in ganze Zahl umwandeln, ohne NA Einführung ??

R auf ganze Zahlen beschränkt ist, die kleiner als 2147483648. Siehe struggling with integers (maximum integer size)

Ihre Befehle arbeiten für kleinere Zahlen: weil ich

+0

Wie wäre es mit 'as.numeric'? – Abdou

+0

@Abdou Ich möchte sie von numerisch in ganze Zahl konvertieren. es macht keinen Sinn, as.numeric auf numeric No zu tun? – nik

+4

Ihre Nummern sind zu groß. Als Referenz siehe '.Machine $ integer.max', was auf meiner 64bit Maschine ungefähr 2,14e + 09 (' 2^31 - 1') ist, also deutlich unter den höheren Zahlen von 4,44e + 09 (knapp über '2^32'). – r2evans

Antwort

1

EDITED keinen Grund sehen zu NA haben

mydata2 <- mydata/1000 
mydata3 <- data.frame(sapply(mydata2, as.integer)) 
str(mydata3) 

'data.frame': 15 obs. of 4 variables: 
$ GroupA_1: int 400730 0 0 0 4442200 0 0 0 0 4482700 ... 
$ GroupA_2: int 375840 0 0 38008 7963200 0 0 0 164980 4102700 ... 
$ GroupA_3: int 342230 0 0 0 6705700 14662 0 0 0 4665000 ... 
$ GroupA_4: int 311840 0 0 0 4611900 0 0 0 148700 5108300 ... 
+1

Danke, aber ich brauche die genauen Werte als Integer ohne jegliche Manipulation – nik

+0

Ich verstehe, aber Sie stoßen gegen ein Limit in R. Siehe den Link in meiner bearbeiteten Antwort (und der Kommentar von @ r2evans oben, die ich vor dem Posten verpasste) . – mkt

+1

In einer der Antworten im Link finden Sie ein Paket 'int64', das Ihnen die Verwendung von größeren Ganzzahlen ermöglicht. Ich habe nicht damit gearbeitet, aber es könnte sich in Ihrem Fall sehen lassen –

Verwandte Themen