neue Spalte unter Bedingungen befüllen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Diana
Beiträge: 4
Registriert: Mi Dez 14, 2022 1:09 pm

neue Spalte unter Bedingungen befüllen

Beitrag 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
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: neue Spalte unter Bedingungen befüllen

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Diana
Beiträge: 4
Registriert: Mi Dez 14, 2022 1:09 pm

Re: neue Spalte unter Bedingungen befüllen

Beitrag 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.
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: neue Spalte unter Bedingungen befüllen

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Diana
Beiträge: 4
Registriert: Mi Dez 14, 2022 1:09 pm

Re: neue Spalte unter Bedingungen befüllen

Beitrag 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.
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: neue Spalte unter Bedingungen befüllen

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Diana
Beiträge: 4
Registriert: Mi Dez 14, 2022 1:09 pm

Re: neue Spalte unter Bedingungen befüllen

Beitrag von Diana »

Ja genau, das sind leere Strings wie "".
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: neue Spalte unter Bedingungen befüllen

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten