Spalten zusammenfügen

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

Moderatoren: EDi, jogo

Antworten
LeaRn
Beiträge: 12
Registriert: Sa Mär 14, 2020 12:25 am

Spalten zusammenfügen

Beitrag von LeaRn »

Hallo
Ich habe folgendes Problem:

Code: Alles auswählen

data.frame(
  x = as.numeric(c("NA", "NA", "NA", 1, 6, 3)),
  y = as.numeric(c(1, 2, 9, "NA", "NA", "NA")),
  z = as.factor(c("a", "a", "a", "b", "b", "b")),
  soll = as.numeric(c(1,2,9,1,6,3))
)
Ich habe einen Datensatz mit den Spalten x, y und z. Ich möchte nun die Spalte "soll" erhalten. Wie kann ich das erreichen?

Danke schon im Voraus.
Liebe Grüsse
LeaRn
Benutzeravatar
student
Beiträge: 456
Registriert: Fr Okt 07, 2016 9:52 am

Re: Spalten zusammenfügen

Beitrag von student »

Hallo LeaRn,

so:

Code: Alles auswählen

Daten <- data.frame(
  x = as.numeric(c("NA", "NA", "NA", 1, 6, 3)),
  y = as.numeric(c(1, 2, 9, "NA", "NA", "NA")),
  z = as.factor(c("a", "a", "a", "b", "b", "b")),
  soll = as.numeric(c(1,2,9,1,6,3))
)

Daten$soll
[1] 1 2 9 1 6 3
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
LeaRn
Beiträge: 12
Registriert: Sa Mär 14, 2020 12:25 am

Re: Spalten zusammenfügen

Beitrag von LeaRn »

Danke für die Antwort.
Der Datensatz besteht nur aus den drei Zeilen x, y und z. Die Spalte "soll" sollte das gewünschte Resultat darstellen, das ich nicht hinbekomme. Diese Spalte existiert also eigentlich nicht. Ich möchte sie aus den Spalten x und y zusammenfügen.
Folgende Dinge habe ich schon probiert:

Code: Alles auswählen

library(tidyverse)

Daten %>%
  mutate(
    soll1 = 
      x + y
  ) #gibt aber NAs

Daten$soll2 <- paste(Daten$x, Daten$y, sep = "_") #hier könnte man mit regular expressions weiter machen
Ich finde leider keine saubere Lösung, um die Spalten x und y so zusammenzufügen, dass daraus Spalte "soll" wird.
Liebe Grüsse
LeaRn
bigben
Beiträge: 1779
Registriert: Mi Okt 12, 2016 9:09 am

Re: Spalten zusammenfügen

Beitrag von bigben »

Ist das sauber genug?

Code: Alles auswählen

d <- data.frame(
        x = as.numeric(c("NA", "NA", "NA", 1, 6, 3)),
        y = as.numeric(c(1, 2, 9, "NA", "NA", "NA")),
        z = as.factor(c("a", "a", "a", "b", "b", "b")),
        soll = as.numeric(c(1,2,9,1,6,3))
    )

d$soll2 <- rowSums(d[,c("x", "y")], na.rm = TRUE)

d$soll3 <- apply(d[1:2], 1, function(x) sum(x, na.rm = TRUE))

ergänzend darf ich sagen, dass Du bei der Definition des dataframes einfach nur die Anführungszeichen um die NA weglassen musst. Dann sparst Du Dir das ganze as.numeric Gedöns:

Code: Alles auswählen

d <- data.frame(
        x = c(NA, NA, NA, 1, 6, 3),
        y = c(1, 2, 9, NA, NA, NA),
        z = c("a", "a", "a", "b", "b", "b"),
        soll = c(1,2,9,1,6,3),
        stringsAsFactors = TRUE
    )
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
LeaRn
Beiträge: 12
Registriert: Sa Mär 14, 2020 12:25 am

Re: Spalten zusammenfügen

Beitrag von LeaRn »

Danke für die Antwort.
Das ist genau was ich gesucht habe.
bei der Definition des dataframes einfach nur die Anführungszeichen um die NA weglassen musst.
Das habe ich nicht gewusst, Danke.

Liebe Grüsse
LeaRn
Benutzeravatar
EDi
Beiträge: 1221
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Spalten zusammenfügen

Beitrag von EDi »

Was soll passieren, wenn beide NA sind oder beide nicht NA sind?

Hier mal ein Beispiel

Code: Alles auswählen

df <- data.frame(
  x = c(NA, NA, NA, 1, 6, 3, NA, 2),
  y = c(1, 2, 9, NA, NA, NA, NA, 1),
  z = c("a", "a", "a", "b", "b", "b", "c", "c")
)

df

rowSums(df[,c("x", "y")], na.rm = TRUE)
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Benutzeravatar
student
Beiträge: 456
Registriert: Fr Okt 07, 2016 9:52 am

Re: Spalten zusammenfügen

Beitrag von student »

Hallo LeaRn,

das freut mich ja, dass Du Deine Frage im 2. Post spezifizierst hast. Das im 1. Post zu tun, hätte Arbeit gespart....
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
bigben
Beiträge: 1779
Registriert: Mi Okt 12, 2016 9:09 am

Re: Spalten zusammenfügen

Beitrag von bigben »

@EDi Das ist ja spannend - und bestimmt nicht das Verhalten, das ich erwartet hätte. Da kann es unter Umständen schlau sein, sich eine eigene Funktion zu schreiben und die Variante mit dem apply zu verwenden, wenn man mit so etwas rechnen muss.

Danke,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten