Guten Tag,
habe ein Textfile, bestehend aus hex-Zahlen (!) mit der Funktion read.table eingelesen.
Nun möchte ich mir z.B. ein Histogramm anzeigen lassen.
Der Datentyp im Stream ist aber Factor. Wie kann ich R sagen, dass ich die Werte als Hex-Zahlen interpretiert haben möchte?
Kann ich ein Histogramm der Hex-Zahlen anzeigen lassen, oder muss ich die Werte vorher in decimal umwandeln? Aber wie?
> str(a)
'data.frame': 10000 obs. of 1 variable:
$ V1: Factor w/ 256 levels "00","01","02",..: 169 57 142 147 239 100 78 169 119 155 ...
> hist(a)
Fehler in hist.default(a) : 'x' muss numerisch sein
Im Internet fand ich zum Beispiel:
a$V1 <- as.numeric(as.character(a$V1))
aber das führt zu:
Warnmeldung:
NAs durch Umwandlung erzeugt
Sieht so aus, als ob nun nur die Hex-Zahlen umgewandelt wurden, die aus reinen Ziffern bestehen, die Buchstaben ("ff") wurden ignoriert.
Wie bekomme ich ein Histogramm der Daten hin?
Danke schonmal,
Teichbader
Umwandlung Factor zu hex
Re: Umwandlung Factor zu hex
Hallo Teichbader,
bitte zeig mal, wie Du die Daten einliest.
Bestimmt kannst Du den Parameter stringsAsFactors=FALSE gut einsetzen.
Man muss vielleicht den character-Vektor etwas ummodeln; anschließend kann man strtoi() verwenden.
Bitte lies den Hilfetext zu der Funktion gründlich
Gruß, Jörg
bitte zeig mal, wie Du die Daten einliest.
Bestimmt kannst Du den Parameter stringsAsFactors=FALSE gut einsetzen.
Man muss vielleicht den character-Vektor etwas ummodeln; anschließend kann man strtoi() verwenden.
Code: Alles auswählen
example(strtoi)
Gruß, Jörg
-
- Beiträge: 5
- Registriert: So Okt 20, 2019 9:30 pm
Re: Umwandlung Factor zu hex
Hallo Jörg,
also strtoi(x,16L) interpretiert die chr Werte als Hex-Werte, auch ohne ein 0x davor.
Funktioniert - Danke!
Gruß Teichbader
also strtoi(x,16L) interpretiert die chr Werte als Hex-Werte, auch ohne ein 0x davor.
Funktioniert - Danke!
Code: Alles auswählen
dat <- read.table ("D:/data.txt",header=FALSE,stringsAsFactors=FALSE)
> str(dat)
'data.frame': 10000 obs. of 1 variable:
$ V1: chr "a8" "38" "8d" "92" ...
> dat$V1[0:4]
[1] "a8" "38" "8d" "92"
> b <- strtoi(dat$V1,16L);
> b[0:4]
[1] 168 56 141 146
>
Gruß Teichbader
Re: Umwandlung Factor zu hex
... und ein etwaiges Faktorargument wird implizit in char umgewandelt:
Gruß, Jörg
p.s.:
Die Indizierung beginnt in R mit 1.
Deshalb werden Dir bei ...[0:4] nur vier Elemente angezeigt und nicht fünf.
Du kannst es auch prüfen mit length(b)
Code: Alles auswählen
x <- as.factor(c("00", "0f", "14"))
strtoi(x, base=16)
p.s.:
Die Indizierung beginnt in R mit 1.
Deshalb werden Dir bei ...[0:4] nur vier Elemente angezeigt und nicht fünf.
Du kannst es auch prüfen mit length(b)
-
- Beiträge: 5
- Registriert: So Okt 20, 2019 9:30 pm
Re: Umwandlung Factor zu hex
Danke!