Seite 1 von 1

neue Spalte unter Bedingungen befüllen

Verfasst: Mi Dez 14, 2022 1:12 pm
von Diana
Hallo,

in R möchte ich etwas ganz banales erstellen, jedoch klappt es nicht.

Ich möchte gerne eine neue Spalte "A_B" erstellen. Das ist erst einmal kein Problem. Als nächsten Schritt möchte ich diese neue Spalte primär mit dem Inhalt der Spalte "A" befüllen, falls diese leer ist, dann mit dem Inhalt der Spalte "B".

Wie muss hier die Syntax aussehen?

Lieben Dank!

Diana

Re: neue Spalte unter Bedingungen befüllen

Verfasst: Mi Dez 14, 2022 1:57 pm
von bigben
Hallo Diana,

herzlich willkommen im "richtigen" Forum.

Kannst Du mit folgendem was anfangen?

Code: Alles auswählen

bsp <- data.frame( a = c(1, 2, 3, NA, NA, NA),
                   b = c(NA, NA, 3, 4, 5, 6) )
print(bsp)
#>    a  b
#> 1  1 NA
#> 2  2 NA
#> 3  3  3
#> 4 NA  4
#> 5 NA  5
#> 6 NA  6

bsp$a_b <- ifelse(test = is.na(bsp$a), yes = bsp$b, no = bsp$a)
print(bsp)
#>    a  b a_b
#> 1  1 NA   1
#> 2  2 NA   2
#> 3  3  3   3
#> 4 NA  4   4
#> 5 NA  5   5
#> 6 NA  6   6

LG,
Bernhard

Re: neue Spalte unter Bedingungen befüllen

Verfasst: Mi Dez 14, 2022 2:16 pm
von Diana
Vielen Dank für die Hilfe!

Bei mir hat es leider nicht geklappt. Wenn Spalte A leer war, war sie in A_B auch leer und nicht mit B befüllt.

Re: neue Spalte unter Bedingungen befüllen

Verfasst: Mi Dez 14, 2022 2:31 pm
von bigben
Hallo Diana,

ich habe Dir ja ein konkretes Code-Beispiel geschrieben, mit dem es nachvollziehbar funktioniert. Was bei Dir anders ist, können wir nicht wissen. Am besten antwortest Du auch mit einem Code-Beispiel, mit dem es nicht funktioniert. Wenn Dein Dataframe zum Beispiel "df1" heißt, dann könntest Du uns einen kleinen Teil davon zur Verfügung stellen, indem Du z. B. das Ergebnis von

Code: Alles auswählen

dput(head(df1, 20))    verpackt die ersten 20 Zeilen in eine Form, die sich gut im Forum posten lässt
hier postest und dazu den Code, mit dem es nicht funktioniert.

Wichtig wäre vielleicht auch eine Beschreibung, was Du unter "leer" verstehst. Ich bin davon ausgegangen, dass in leeren Feldern der Wert NA steht. Vielleicht ist das bei Dir anders, dann würde natürlich auch die Abfrage mit is.na() nicht funktionieren können.

LG,
Bernhard

Re: neue Spalte unter Bedingungen befüllen

Verfasst: Mi Dez 14, 2022 2:44 pm
von Diana
Mein Beispiel sieht wie folgt aus:

datei$A_B <- ifelse(test = is.na(datei$A) , yes = datei$B, no = datei$A)

In Spalte A_B stehen nun lediglich die Daten aus Spalte A, d. h. wenn die Felder in Spalte A leer sind, sind sie in Spalte A_B auch leer.

Bei mir handelt es sich bei leeren Feldern um tatsächlich leere Felder; es steht kein NA drin.

Re: neue Spalte unter Bedingungen befüllen

Verfasst: Mi Dez 14, 2022 6:00 pm
von bigben
Wenn das kein NA ist, kann is.na() nicht funktionieren. Meine Frage, was Du unter "leer" verstehst ist damit nicht beantwortet. Sind das alles leere Strings wie in ""?

LG, Bernhard

Re: neue Spalte unter Bedingungen befüllen

Verfasst: Fr Dez 16, 2022 7:08 am
von Diana
Ja genau, das sind leere Strings wie "".

Re: neue Spalte unter Bedingungen befüllen

Verfasst: Fr Dez 16, 2022 3:02 pm
von bigben
Dann ersetze is.na durch den Vergleich mit "". Hier verwende ich `!=` was in R soviel wie "ist ungleich" bedeutet:

Code: Alles auswählen

bsp$a_b <- ifelse(bsp$a != "", yes = bsp$a, no = bsp$b)
HTH,
Bernhard