R nicht umwandeln kann NaN um NA
Habe ich einen Daten-frame mit mehreren Faktor-Spalten mit NaN
's, die ich möchte, zu konvertieren, zu NA
's (die NaN
scheint ein problem für die Verwendung der linearen regression Objekte Vorhersagen auf neuen Daten).
> tester1 <- c("2", "2", "3", "4", "2", "3", NaN)
> tester1
[1] "2" "2" "3" "4" "2" "3" "NaN"
> tester1[is.nan(tester1)] = NA
> tester1
[1] "2" "2" "3" "4" "2" "3" "NaN"
> tester1[is.nan(tester1)] = "NA"
> tester1
[1] "2" "2" "3" "4" "2" "3" "NaN"
möchten Sie vielleicht einen Blick auf
Das Beispiel macht keinen Sinn: wie schlagen Sie vor, um Zeichen darzustellen, die in einer linearen regression?
Es ist ein Faktor. Zuletzt habe ich geprüft lm() können deal w/ Faktoren. Ich hätte geworfen ein Faktor() um das Beispiel.
setattr
aus den Daten.Tabelle Paket.. auch prüfen, MatthewDowle Antwort auf meine Frage heute früh: stackoverflow.com/questions/9463980/...Das Beispiel macht keinen Sinn: wie schlagen Sie vor, um Zeichen darzustellen, die in einer linearen regression?
Es ist ein Faktor. Zuletzt habe ich geprüft lm() können deal w/ Faktoren. Ich hätte geworfen ein Faktor() um das Beispiel.
InformationsquelleAutor screechOwl | 2012-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist das problem: der Vektor-Charakter ist in mode, so natürlich, es ist "keine Nummer". Das Letzte element bekam interpretiert die Zeichenkette "NaN". Mit
is.nan
nur sinnvoll ist, wenn der Vektor numerisch ist. Wenn Sie wollen, um einen Wert fehlt ein Charakter-Vektor (, so kommt er handle richtig, indem Regressions-Funktionen), dann verwenden Sie (ohne Anführungszeichen)NA_character_
.Weder "NA" noch "NaN" sind wirklich fehlt in character Vektoren. Wenn aus irgendeinem Grund wurden die Werte in eine Faktor-variable, die waren "NaN" dann würden Sie in der Lage gewesen, nur verwenden Sie logische Indizierung:
Das Letzte Ergebnis könnte überraschend sein. Es ist ein noch "NaN" - Niveau, aber keines der Elemente ist "NaN". Statt das element, das wurde "NaN" ist jetzt eine echte fehlenden Wert bedeutete in print als .
InformationsquelleAutor 42-
Können Sie nicht
NaN
in ein Charakter-Vektor, das ist das, was Sie hier haben:Bemerken, wie R meint, dies ist eine Zeichenfolge.
Können Sie erstellen
NaN
in einen numerischen Vektor:Dann, natürlich, R umwandeln kann
NaN
zuNA
wie pro Ihre-code:InformationsquelleAutor Gavin Simpson
EDIT:
Gavin Simpson in den Kommentaren erinnert mich daran, dass, in Ihrer situation, gibt es viel einfachere Wege, um zu konvertieren, was ist wirklich ein "NaN", "NA":
Lösung:
Erkennen können, welche Elemente des character-Vektors sind
NaN
, müssen Sie zum konvertieren von Vektor-zu einem numerischen Vektor:Erklärung:
Es gibt ein paar Gründe, dass dies nicht so funktioniert wie Sie es erwarten.
Erste, obwohl
NaN
steht für "not a Number", es hat Klasse"numeric"
, und macht nur Sinn innerhalb eines numerischen Vektors.Zweitens, wenn es ist in ein Zeichen, Vektor, symbol
NaN
automatisch konvertiert die Zeichenkette"NaN"
. Wenn du dann testen Sie es fürnan
-ness, die Zeichenkette zurückFALSE
:NA
in einem Ihrer Beispiele.OK. Ist jetzt behoben. Vielen Dank für das Tippen auf der Schulter erinnerte mich daran, ziehen meinen Kopf aus ... das Unkraut!
Ich denke immer noch, Sie sind overthinking, was der OP will. Er will
NaN
umgewandeltNA
nicht die string-Versionen, aber die wirkliche R-Versionen, der angibt, Nicht die Anzahl und missingness beziehungsweise. Ignorieren Sie die"NA"
in einem der OP ' s Beispiel - das ist ein red herring, ich nehme an, Sie dachte, dass die Quotierung NA vielleicht arbeiten alsNA
in ein Charakter-Vektor oder sowas.Ich weiß was du meinst, aber die OP auch zitiert alle ganzen zahlen im Beispiel Vektoren, so gibt es mehr wie 25 rote Heringe dort oben, wenn Sie Recht haben. (Obwohl der Verweis auf NaN Angabe von Problemen in der linearen Regressionen jetzt macht mich denken, dass Sie wahrscheinlich Recht).
Wow. Meine erste downvote, vermutlich für die Beantwortung der Frage des OP tatsächlich gefragt, sondern als das, was Sie vielleicht gemeint haben, zu Fragen!? Naja.
InformationsquelleAutor Josh O'Brien