如何对 Dataframe 的每第n列取平均值?即第1&10&19&...,2&11&20&..,3&12&21&

qgzx9mmu  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(103)

我设法排序我的excel文件到一个单一的数据框架然而,由于我的知识有限,我使它,使数据呈现在一个连续的方式(见下文):
时间事件1事件2事件3...事件ID 8时间事件1事件2事件3...事件ID 8
所以我需要找到一种方法来平均每第n列在一个远离,如果我决定导入更多的excel文件的脚本仍将按预期工作?
我试过寻找这样的函数,但找不到完全符合我需要的东西。这是我第一次使用R,如果你能告诉我每个命令的细节,我将不胜感激!

vlju58qv

vlju58qv1#

如果要被平均的列具有“Event”后跟数字的模式,并且希望仅对具有相同重复前缀的列进行平均,则一种方法将是通过移除后缀部分来对列的Event子集使用split.default(如果是data.frame,则data.frame将为重复列名创建后缀.1、.2等,以使其唯一),使用sapply循环list,并获得rowMeans

nm1 <- grep("^Event\\d+$", names(df1), value = TRUE)
sapply(split.default(df1[nm1], sub("\\..*", "", nm1)), rowMeans, na.rm = TRUE)

另一个选项是按位置索引的子集(不清楚列的总数-可能需要将1:3更改为1:(ncol(df1)-18左右

sapply(1:3, \(i)  rowSums(df1[i + (0:2)*9], na.rm = TRUE))

相关问题