Seite 1 von 1
Immer 7 Spalten addieren
Verfasst: Sa Mai 29, 2021 11:07 am
von JoHannA
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?
Re: Immer 7 Spalten addieren
Verfasst: Sa Mai 29, 2021 1:52 pm
von schubbiaschwilli
Gude!
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)
Dank&Gruß
Schubbiaschwilli
Re: Immer 7 Spalten addieren
Verfasst: Sa Mai 29, 2021 7:36 pm
von JoHannA
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
Re: Immer 7 Spalten addieren
Verfasst: Sa Mai 29, 2021 9:06 pm
von schubbiaschwilli
Gude!
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?
Ich verstehe die Frage nicht.
Dank&Gruß
Schubbiaschwilli
Re: Immer 7 Spalten addieren
Verfasst: Sa Mai 29, 2021 10:34 pm
von bigben
Hallo Johanna,
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.
Wenn das nicht hilft, beschreibe bitte ausführlicher, was Du genau erreichen willst.
LG,
Bernhard
Re: Immer 7 Spalten addieren
Verfasst: Mo Mai 31, 2021 9:48 am
von jogo
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.
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)
Gruß, Jörg
Re: Immer 7 Spalten addieren
Verfasst: Mo Mai 31, 2021 10:10 am
von bigben
JoHannA hat geschrieben: Sa Mai 29, 2021 11:07 amGegeben 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.
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)
LG,
Bernhard
Re: Immer 7 Spalten addieren
Verfasst: Mo Mai 31, 2021 10:47 am
von schubbiaschwilli
Gude!
241 ist nicht durch 7 teilbar. Was ist mit den anderen 3 Spalten?
Die Idee hatte ich auch, aber aus diesem Grund wieder verworfen.
Dank&Gruß
Schubbiaschwilli
Re: Immer 7 Spalten addieren
Verfasst: Di Jun 01, 2021 1:51 pm
von JoHannA
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