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
In einem 'dataframe' bestimmte werte verändern
-
- Beiträge: 12
- Registriert: Mo Jun 15, 2020 10:42 am
Re: In einem 'dataframe' bestimmte werte verändern
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.
LG,
Bernhard
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
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
-
- Beiträge: 12
- Registriert: Mo Jun 15, 2020 10:42 am
Re: In einem 'dataframe' bestimmte werte verändern
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.
LG,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
Bernhard
Hallo Bernhard,
vielen Dank für die schnelle Antwort! Hast mir sehr geholfen!