每四行应用函数

数据挖掘 r 预处理
2022-03-01 18:57:24

假设我有一个这样的数据集X<-matrix(rnorm(30), nrow=100, ncol=6)我正在尝试找到一种方法将 sum 函数应用于第 3 列的每四行。这意味着我想对第 1-4 行、第 4-8 行等进行求和。

我可以使用诸如 apply 或 lapply 之类的功能吗?

1个回答

您可以使用tapplyaggregate

set.seed(1)
X <- matrix(rnorm(30), nrow=100, ncol=6)
id <- ceiling(seq_len(nrow(X))/4)

tapply(X[, 3], id, sum)
#       1       2       3       4       5       6       7       8       9      10 
# -0.2137 -1.0629 -0.5030  0.2687  1.4961 -0.9343  2.0076  3.1162 -1.3511 -1.6868

aggregate(X[, 3], by=list(id), FUN=sum)
#    Group.1       x
# 1        1 -0.2137
# 2        2 -1.0629
# 3        3 -0.5030
# 4        4  0.2687
# 5        5  1.4961
# 6        6 -0.9343
# 7        7  2.0076
# 8        8  3.1162
# ...

# check results
sum(X[1:4, 3])
# [1] -0.2137
sum(X[5:8, 3])
# [1] -1.063