对一列中的每四行求和
Sum each four rows in a column
我是 R 的初学者,我真的需要你的帮助。我正在尝试获取一个新的数据框,用于存储我的列中每五行的总和。
例如,我有一个包含两列 (A,B) 的数据框 (delta)
A B
2 3
1 2
3 2
4 5
3 7
5 6
2 5
我正在寻找的输出是
AA BB
13 19
16 22
17 25
哪里
13 = row1+row2+row3+row4+row5
16 = row2+row3+row4+row5+row6
等等...
我不知道从哪里开始。非常感谢你们的帮助。
主题指的是 4 行,但问题中的示例指的是 5 行。我们在下面使用了 5,但如果您想要 4,只需在代码中将 5 替换为 4。
1) rollsum 在末尾使用注释中的可重现输入 rollsum
。如果矩阵可以作为输出,则省略 as.data.frame。
library(zoo)
as.data.frame(rollsum(DF, 5))
## A B
## 1 13 19
## 2 16 22
## 3 17 25
2) filter 基础 R 中的过滤器也有效。请注意,如果您加载了 dplyr,它会破坏过滤器,因此在这种情况下,请使用 stats::filter 代替过滤器,以确保您获得正确的版本。
setNames(as.data.frame(na.omit(filter(DF, rep(1, 5)))), names(DF))
## A B
## 1 13 19
## 2 16 22
## 3 17 25
备注
Lines <- "
A B
2 3
1 2
3 2
4 5
3 7
5 6
2 5"
DF <- read.table(text = Lines, header = TRUE)
这是一个使用 frollsum
的 data.table
选项,例如
> na.omit(setDT(df)[,lapply(.SD,frollsum,5)])
A B
1: 13 19
2: 16 22
3: 17 25
或
> na.omit(setDT(df)[,setNames(frollsum(.SD,5),names(.SD))])
A B
1: 13 19
2: 16 22
3: 17 25
我是 R 的初学者,我真的需要你的帮助。我正在尝试获取一个新的数据框,用于存储我的列中每五行的总和。
例如,我有一个包含两列 (A,B) 的数据框 (delta)
A B
2 3
1 2
3 2
4 5
3 7
5 6
2 5
我正在寻找的输出是
AA BB
13 19
16 22
17 25
哪里
13 = row1+row2+row3+row4+row5
16 = row2+row3+row4+row5+row6
等等...
我不知道从哪里开始。非常感谢你们的帮助。
主题指的是 4 行,但问题中的示例指的是 5 行。我们在下面使用了 5,但如果您想要 4,只需在代码中将 5 替换为 4。
1) rollsum 在末尾使用注释中的可重现输入 rollsum
。如果矩阵可以作为输出,则省略 as.data.frame。
library(zoo)
as.data.frame(rollsum(DF, 5))
## A B
## 1 13 19
## 2 16 22
## 3 17 25
2) filter 基础 R 中的过滤器也有效。请注意,如果您加载了 dplyr,它会破坏过滤器,因此在这种情况下,请使用 stats::filter 代替过滤器,以确保您获得正确的版本。
setNames(as.data.frame(na.omit(filter(DF, rep(1, 5)))), names(DF))
## A B
## 1 13 19
## 2 16 22
## 3 17 25
备注
Lines <- "
A B
2 3
1 2
3 2
4 5
3 7
5 6
2 5"
DF <- read.table(text = Lines, header = TRUE)
这是一个使用 frollsum
的 data.table
选项,例如
> na.omit(setDT(df)[,lapply(.SD,frollsum,5)])
A B
1: 13 19
2: 16 22
3: 17 25
或
> na.omit(setDT(df)[,setNames(frollsum(.SD,5),names(.SD))])
A B
1: 13 19
2: 16 22
3: 17 25