Seite 1 von 1

In einem 'dataframe' bestimmte werte verändern

Verfasst: Fr Jul 03, 2020 4:07 pm
von R_beginner
Hallo Zusammen,
mein Datensatz hat folgende Struktur:

X <- (c(1:8))
seq <- c("A","B","A","B","A","B","A","B" )
set.seed(2020)
valueA <- rnorm(n=8,mean=5.5,sd=1.2)
valueB <- rnorm(n=8,mean=2,sd=0.6)
valueC <- rnorm(n=8,mean=1,sd=0.2)
daten <- data.frame(X, valueA, valueB, valueC, seq)

Ich würde jetzt gerne zwei dinge machen:
1.) Alle Werte aus "daten" mit seq = A sollen mit 2 multipliziert werden.
2.) Alle Werte aus "daten" der spalte valueC und mit seq = B sollen =0 sein.

Ich habe bis jetzt noch nicht den richtigen Ansatz gefunden.
Könnte das mit der Funktion mutate aus dem Packet dplyr funktionieren oder gibt es eine ganz einfache Variante solche Rechenoperationen durchzuführen?

Vielen Dank schon jetzt für eure Mühe

Re: In einem 'dataframe' bestimmte werte verändern

Verfasst: Fr Jul 03, 2020 4:39 pm
von bigben
Ganz bestimmt kann man das auch mit dplyr machen. Ich mach mal einen von vielen möglichen Vorschlägen ohne dplyr. Ich führe dabei die Hilfsvariablen "reihen" und "spalten" ein, die einfach nur die Lesbarkeit verbessern sollen.

Code: Alles auswählen

# Alle Werte aus "daten" mit seq = A sollen mit 2 multipliziert werden.
reihen <- which(daten$seq == "A")
spalten <-c("valueA", "valueB", "valueC")
daten[reihen, spalten] <- 2 * daten[reihen, spalten]

# Alle Werte aus "daten" der spalte valueC und mit seq = B sollen =0 sein.
reihen <- which(daten$seq == "B")
daten[reihen, "valueC"] <- 0
LG,
Bernhard

Re: In einem 'dataframe' bestimmte werte verändern

Verfasst: Fr Jul 03, 2020 4:50 pm
von R_beginner
bigben hat geschrieben: Fr Jul 03, 2020 4:39 pm Ganz bestimmt kann man das auch mit dplyr machen. Ich mach mal einen von vielen möglichen Vorschlägen ohne dplyr. Ich führe dabei die Hilfsvariablen "reihen" und "spalten" ein, die einfach nur die Lesbarkeit verbessern sollen.

Code: Alles auswählen

# Alle Werte aus "daten" mit seq = A sollen mit 2 multipliziert werden.
reihen <- which(daten$seq == "A")
spalten <-c("valueA", "valueB", "valueC")
daten[reihen, spalten] <- 2 * daten[reihen, spalten]

# Alle Werte aus "daten" der spalte valueC und mit seq = B sollen =0 sein.
reihen <- which(daten$seq == "B")
daten[reihen, "valueC"] <- 0
LG,
Bernhard

Hallo Bernhard,

vielen Dank für die schnelle Antwort! Hast mir sehr geholfen!