Seite 1 von 1

nested for loop mit if abfrage

Verfasst: Sa Aug 17, 2019 8:21 am
von ad_berlin
Hi,

ich möchte country codes (buchstaben) in einem numerischen country code überschreiben. den schlüssel (also buchstaben und numerischen country code) habe ich aus einer .csv importiert. ich habe mir folgenden nested for loop mit if abfrage überlegt aber leider läuft das ganze nicht. mit folgendem fehler
Error in Ops.factor(doc_report$nationality, countries$code3[n]) :
level sets of factors are different

habe leider keinen plan warum.

Code: Alles auswählen

i<-1
n <- 1
for (i in 1:nrow(doc_report)) {
  for (n in 1:nrow(countries)) {
    if(doc_report$nationality[i] == countries$code3[n])
      doc_report$nationality[i] <- countries$numcode[n]
    else
      if(doc_report$nationality[i] == "NA")
      doc_report$nationality[i] <- 000
  }
}

Re: nested for loop mit if abfrage

Verfasst: Sa Aug 17, 2019 9:20 am
von EDi
Du solltest auf das umwandeln in Faktoren verzichten (blödsrweise eine Standardeinstellung von R).

Re: nested for loop mit if abfrage

Verfasst: Sa Aug 17, 2019 11:11 am
von Athomas
Wenn Du Daten und ein vollständiges Programm zeigen würdest, könnte man (eine Menge) mehr sagen :( !

Code: Alles auswählen

if(doc_report$nationality[i] == "NA")
Das wird nicht (wie voraussichtlich gewünscht) funktionieren...

Re: nested for loop mit if abfrage

Verfasst: Sa Aug 17, 2019 3:44 pm
von jogo
Das sieht mir sehr nach einem update-join aus. Aber man kann die gewünschten Daten auch erstmal als zusätzliche Spalte einfügen.
(dann wird es in einem ersten Schritt einfach merge())
Faktoren sind dabei durchaus hinderlich. Insofern kann ich die Empfehlung von Edi nur bekräftigen.

Gruß, Jörg