Ho un data.frame
che è 100x100 e ho bisogno di riassumerlo come una scala mobile. Iniziare con la prima voce della prima colonna e quindi continuare ad aggiungere la prima voce della seconda colonna alla seconda voce della prima e così via fino a quando l'ultima voce della somma è l'ultima riga dell'ultima colonna. Guardarlo come una matrice diagonale comesomma di righe indipendenti di un frame di dati in un modo crescente
d3 <- data.frame(a = c(rep(0.5,5),0,0), b = c(0,rep(0.3,5),0), e = c(0,0,rep(0.8,5)))
potrebbe essere utile per capire il problema. Voglio sommare le righe di una matrice come d3
.
Ho cercato di creare un piccolo esempio ma non sono stato in grado di creare un ciclo o una funzione che semplifica il lavoro.
devo questi dati:
d <- data.frame(a = rep(0.5,5), b = rep(0.3,5), e = rep(0.8,5))
e ho bisogno di un modo per creare un singolo vettore con le voci:
d2 <- rep(NA)
d2[1] <- d$a[1]
d2[2] <- sum(d$a[2],d$b[1])
d2[3] <- sum(d$a[3],d$b[2],d$e[1])
d2[4] <- sum(d$a[4],d$b[3],d$e[2])
d2[5] <- sum(d$a[5],d$b[4],d$e[3])
d2[6] <- sum(d$b[5],d$e[4])
d2[7] <- d$e[5]
che è uguale a c(0.5, 0.8, 1.6, 1.6, 1.6, 1.1, 0.8)
.
vi ringrazio in anticipo per l'aiuto
Meglio usare matrici, non data.frames. Puoi identificare la tua selezione di "scale mobili" di righe, 'esca', con una matrice 0/1 per moltiplicare contro' d', come 'd% *% esca'. – Frank