Immer 7 Spalten addieren

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
JoHannA
Beiträge: 6
Registriert: Sa Mai 29, 2021 11:03 am

Immer 7 Spalten addieren

Beitrag 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?
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Immer 7 Spalten addieren

Beitrag 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
JoHannA
Beiträge: 6
Registriert: Sa Mai 29, 2021 11:03 am

Re: Immer 7 Spalten addieren

Beitrag 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
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Immer 7 Spalten addieren

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Immer 7 Spalten addieren

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Immer 7 Spalten addieren

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Immer 7 Spalten addieren

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Immer 7 Spalten addieren

Beitrag 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
JoHannA
Beiträge: 6
Registriert: Sa Mai 29, 2021 11:03 am

Re: Immer 7 Spalten addieren

Beitrag 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
Antworten