gpt4 book ai didi

r - 取行意味着基于列的分区

转载 作者:行者123 更新时间:2023-12-04 20:30:51 24 4
gpt4 key购买 nike

我有一个矩阵 mat 并想根据分组变量 gp 计算列的平均值。

mat<-embed(1:5000,1461)
gp<-c(rep(1:365,each=4),366)

为此,我使用以下内容

colavg<-t(aggregate(t(mat),list(gp),mean))

但这比我预期的要长得多。

有什么让代码运行得更快的建议吗?

最佳答案

这是一个快速算法,我在代码中注释了。

system.time({

# create a list of column indices per group
gp.list <- split(seq_len(ncol(mat)), gp)

# for each group, compute the row means
means.list <- lapply(gp.list, function(cols)rowMeans(mat[,cols, drop = FALSE]))

# paste everything together
colavg <- do.call(cbind, means.list)

})
# user system elapsed
# 0.08 0.00 0.08

关于r - 取行意味着基于列的分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9955320/

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