Immer 7 Spalten addieren
Immer 7 Spalten addieren
Hallo zusammen,
ich suche einen eleganten Weg zu folgendem Problem, das ich in ganz vielen Einzelschritten berechnet habe und deswegen sehr unübersichtlich ist:
Gegeben ist ein Dataframe mit 241 Spalten, von denen ich jeweils 7 addieren möchte und das Ergebnis in ein neues Dataframe speichern.
Meine Idee wäre eine for-Schleife, aber hier weiß ich nicht, wie ich jeweils 7 Spalten adressiere. Geht es vlt auch mit der apply-Funktion?
ich suche einen eleganten Weg zu folgendem Problem, das ich in ganz vielen Einzelschritten berechnet habe und deswegen sehr unübersichtlich ist:
Gegeben ist ein Dataframe mit 241 Spalten, von denen ich jeweils 7 addieren möchte und das Ergebnis in ein neues Dataframe speichern.
Meine Idee wäre eine for-Schleife, aber hier weiß ich nicht, wie ich jeweils 7 Spalten adressiere. Geht es vlt auch mit der apply-Funktion?
-
- Beiträge: 253
- Registriert: Di Jun 27, 2017 12:09 pm
Re: Immer 7 Spalten addieren
Gude!
Sowas - Nur halt mit 7 Variablen?
Dank&Gruß
Schubbiaschwilli
Sowas - Nur halt mit 7 Variablen?
Code: Alles auswählen
data <- data.frame(x1=1:10, x2=11:20, x3=21:30)
result <- data.frame(sum=data$x1 + data$x2 + data$x3)
Schubbiaschwilli
Re: Immer 7 Spalten addieren
Vielen Dank!
Eine Rückfrage habe ich noch: In der ersten Zeile wird ein neues DataFrame erstellt, richtig?
Wie würde es funktionieren, wenn ich aus einem bestehenden DataFrame (z.B. Temperaturen) jeweils 7 Spalten addieren will und die Ergebnisse in ein neues DataFrame (z.B. Temperaturen_Woche) speichern will?
Anstatt 1:10 dann Temperaturen[, c(1,10)]?
Mit 241 Spalten ist es auch ziemlich umständlich, oder? Gibt es eine elegantere Lösung über eine Schleife oder Funktion z.B.?
Beste Grüße
Johanna
Eine Rückfrage habe ich noch: In der ersten Zeile wird ein neues DataFrame erstellt, richtig?
Wie würde es funktionieren, wenn ich aus einem bestehenden DataFrame (z.B. Temperaturen) jeweils 7 Spalten addieren will und die Ergebnisse in ein neues DataFrame (z.B. Temperaturen_Woche) speichern will?
Anstatt 1:10 dann Temperaturen[, c(1,10)]?
Mit 241 Spalten ist es auch ziemlich umständlich, oder? Gibt es eine elegantere Lösung über eine Schleife oder Funktion z.B.?
Beste Grüße
Johanna
-
- Beiträge: 253
- Registriert: Di Jun 27, 2017 12:09 pm
Re: Immer 7 Spalten addieren
Gude!
Dank&Gruß
Schubbiaschwilli
Ich verstehe die Frage nicht.Wie würde es funktionieren, wenn ich aus einem bestehenden DataFrame (z.B. Temperaturen) jeweils 7 Spalten addieren will und die Ergebnisse in ein neues DataFrame (z.B. Temperaturen_Woche) speichern will?
Dank&Gruß
Schubbiaschwilli
Re: Immer 7 Spalten addieren
Hallo Johanna,
schau mal, ob Dir dieses Beispiel hilft:
Wenn das nicht hilft, beschreibe bitte ausführlicher, was Du genau erreichen willst.
LG,
Bernhard
schau mal, ob Dir dieses Beispiel hilft:
Code: Alles auswählen
# Zufällige Beispieldaten mit 241 Spalten zum ausprobieren
bsp <- as.data.frame(matrix(rnorm(2410), ncol = 241))
str(bsp)
# Wir extrahieren die Spalten Nr. 45 bis 51 (das sind 7 Spalten)
auszug <- bsp[,45:51]
print(auszug)
# ich ändere da mal was. Das hilft uns später bei der Plausibilitätskontrolle:
auszug[1,] <- c(1, 1, 1, 1, 1, 1, 1) # eine Reihe mit lauter Einsen
auszug[2,] <- c(1, 0, 0, 0, 0, 0, 0) # eine Reihe mit nur einer Eins
print(auszug)
# Und davon berechnen wir jetzt die Zeilensummen
rowSums(auszug) # die manipulierten Zeilen haben korrekte Zeilensummen 7 bzw 1.
LG,
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
Re: Immer 7 Spalten addieren
Hallo Johanna,
willkommen im Forum!
241 ist nicht durch 7 teilbar. Was ist mit den anderen 3 Spalten?
Wenn die Größe des Dataframes nicht besonders ist, kann man den Dataframe in ein 3-dimensionales array umwandeln und dann apply() für die Summenbildung verwenden.
Gruß, Jörg
willkommen im Forum!
241 ist nicht durch 7 teilbar. Was ist mit den anderen 3 Spalten?
Wenn die Größe des Dataframes nicht besonders ist, kann man den Dataframe in ein 3-dimensionales array umwandeln und dann apply() für die Summenbildung verwenden.
Code: Alles auswählen
M <- matrix(100*(1:3)+rep(1:14, each=3), 3, 14)
M
A <- array(M, c(3, 7, 2))
A
apply(A, c(1,3), sum)
Re: Immer 7 Spalten addieren
Ach so, mit Jörgs Antwort verstehe ich jetzt, wie man die Frage noch verstehen kann. Vielleicht auch mit überlappenden 7er Einheiten? Mit der von Dir vorgeschlagenen for-Schleife könnte man sowas machen:
Code: Alles auswählen
bsp <- as.data.frame(matrix(rnorm(2410), ncol = 241))
ergebnis <- NULL # füllen wir später mit Daten
for(erste.spalte in 1:(241-6)) # spaltenweise abarbeiten
{
letzte.spalte <- erste.spalte + 6
r <- rowSums(bsp[,erste.spalte:letzte.spalte])
ergebnis <- cbind(ergebnis, r)
}
ergebnis <- data.frame(ergebnis)
head(ergebnis)
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: 253
- Registriert: Di Jun 27, 2017 12:09 pm
Re: Immer 7 Spalten addieren
Gude!
Dank&Gruß
Schubbiaschwilli
Die Idee hatte ich auch, aber aus diesem Grund wieder verworfen.241 ist nicht durch 7 teilbar. Was ist mit den anderen 3 Spalten?
Dank&Gruß
Schubbiaschwilli
Re: Immer 7 Spalten addieren
Vielen vielen Dank an alle Antworten! Haben mir sehr weitergeholfen!
Die for-Schleife war genau das, was ich mir gedacht hatte, aber mit meinem Wissen nicht in Code umsetzen konnte.
Liebe Grüße!
Johanna
Die for-Schleife war genau das, was ich mir gedacht hatte, aber mit meinem Wissen nicht in Code umsetzen konnte.
Liebe Grüße!
Johanna