Ich habe ein sehr merkwürdiges Problem in Bezug auf die ifelse-Funktion: Es gibt keinen Faktor zurück (wie ich will), sondern etwas wie die Position des Faktors.
Der Datensatz, den ich verwende, kann hier heruntergeladen werden.
.. ist eine neue Spalte in df, die den Namen des Landes enthält, wenn dieses Land zu den Top 12 der häufigsten Länder gehört (in der Spalte "Antwort"). Sonst sollte es "Andere" enthalten
... ist
... R gibt etwas wirklich Merkwürdiges zurück: Es gibt die Position der Faktorstufe (zwischen 1 und 181) für die Top 10 Länder und "Andere" für die anderen zurück (was in Ordnung ist). Es ist diese Zeile, die den falschen Wert zurückgibt:
%Vor%PS. Dies ist eine Follow-up-Frage zu dieses , weil es etwas anders ist, und vielleicht eine separate Frage brauchen.
Das liegt daran, dass Sie einen Faktor haben:
%Vor% Lesen Sie die Warnung in help("ifelse")
:
Der Modus des Ergebnisses kann vom Wert des Tests abhängen (siehe Beispiele), und das Klassenattribut (siehe oldClass) des Ergebnisses ist aus dem Test genommen und kann für die ausgewählten Werte ungeeignet sein Ja und Nein.
Manchmal ist es besser, eine Konstruktion wie
zu verwenden(tmp & lt; - ja; tmp [! Test] & lt; - nein [! Test]; tmp), möglicherweise erweitert auf behandeln fehlende Werte im Test.
Ändern Sie Ihre ifelse
wie folgt
Beachten Sie die Funktion levels
und die Boxklammern. Levels weiß, wie viele Faktoren ihr und ihr Index sind. Also, was wir sagen, ist der Faktorwert, der einem Indexwert entspricht.
Beispieldemo:
%Vor% Die Spalte top
in myData wird "Andere" für China & amp; Brasilien. Für Reihen, in denen Allcountries in {India, USA, UK} angegeben ist, werden die entsprechenden Werte zurückgegeben, d. H. {India, USA, UK}. Ohne die Verwendung von levels
gibt es "Andere" und Faktorindexwerte für {Indien, USA, UK} zurück.
Tags und Links r if-statement