假设我有一个类似于这个X<-matrix(rnorm(30), nrow=100, ncol=6)
的数据集。我试图找到一种方法,将sum函数应用于第3列的每四行,这意味着我希望对第1-4行、第4-8行等行进行求和。
我是否可以使用诸如“应用”或“应用”之类的功能?
发布于 2016-04-03 18:54:35
您可以使用tapply
或aggregate
:
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
https://datascience.stackexchange.com/questions/11012
复制相似问题