gpt4 book ai didi

r - 如何迭代地求和 R 中关联表的对角线

转载 作者:行者123 更新时间:2023-12-01 10:24:41 25 4
gpt4 key购买 nike

我有一个疾病事件的数据框。按年份和年龄,看起来像这样(它比这个例子大得多)

     88  89  90  91      
22 1 2 5 14
23 1 6 9 15
24 2 5 12 11
25 3 3 7 20

我想做的是迭代对角线求和,得到这个结果

     88  89  90  91      
22 1 2 5 14
23 1 7 11 20
24 2 6 19 22
25 3 5 13 39

或者,换句话说;原始数据集:

     Y1  Y2  Y3  Y4      
22 A1 B1 C1 D1
23 A2 B2 C2 D2
24 A3 B3 C3 D3
25 A4 B4 C4 D4

最终数据集:

     Y1  Y2     Y3        Y4      
22 A1 B1 C1 D1
23 A2 A1+B2 B1+C2 C1+D2
24 A3 A2+B3 A1+B2+C3 B1+C2+D3
25 A4 A3+B4 A2+B3+C4 A1+B2+C3+D4

有没有办法在 R 中做到这一点?

我看过这个问题How to sum over diagonals of data frame , 但他只想要总和,我想要迭代和。

谢谢。

最佳答案

使用 ave 注意 row(m) - col(m) 在对角线上是常量:

ave(m, row(m) - col(m), FUN = cumsum)
## 88 89 90 91
## 22 1 2 5 14
## 23 1 7 11 20
## 24 2 6 19 22
## 25 3 5 13 39

假设 m 是下面注释中的矩阵。如果您有数据框,请先将其转换为矩阵。

注意事项

可重现形式的输入矩阵m是:

Lines <- "     88  89  90  91      
22 1 2 5 14
23 1 6 9 15
24 2 5 12 11
25 3 3 7 20"
m <- as.matrix(read.table(text = Lines, check.names = FALSE))

关于r - 如何迭代地求和 R 中关联表的对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48551642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com