我的data.frame
是100x100,我需要将它们总结为自动扶梯。从第一列的第一个条目开始,然后继续将第二列的第一个条目添加到第一个条目的第二个条目,依此类推,直到最后一个sum的条目是最后一列的最后一行。将其视为对角矩阵,例如
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)))
可能有助于理解问题。我想对像d3
这样的矩阵的行求和。
我尝试创建一个小例子,但我还没有能够创建一个简化工作的循环或功能。
我有这些数据:
d <- data.frame(a = rep(0.5,5), b = rep(0.3,5), e = rep(0.8,5))
我需要一种方法来创建一个带有条目的矢量:
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]
等于c(0.5, 0.8, 1.6, 1.6, 1.6, 1.1, 0.8)
。
提前感谢您的帮助
答案 0 :(得分:2)
您可以尝试
m1 <- as.matrix(d)
unname(tapply(m1, col(m1)+row(m1), FUN=sum))
#[1] 0.5 0.8 1.6 1.6 1.6 1.1 0.8
答案 1 :(得分:1)
您可以尝试:
rowSums(
mapply(function(x,y) {
ret<-numeric(nrow(d)+ncol(d)-1)
ret[y:(y+length(x)-1)]<-x
ret},d,1:(length(d)))
)