我设法排序我的excel文件到一个单一的数据框架然而,由于我的知识有限,我使它,使数据呈现在一个连续的方式(见下文):时间事件1事件2事件3...事件ID 8时间事件1事件2事件3...事件ID 8所以我需要找到一种方法来平均每第n列在一个远离,如果我决定导入更多的excel文件的脚本仍将按预期工作?我试过寻找这样的函数,但找不到完全符合我需要的东西。这是我第一次使用R,如果你能告诉我每个命令的细节,我将不胜感激!
vlju58qv1#
如果要被平均的列具有“Event”后跟数字的模式,并且希望仅对具有相同重复前缀的列进行平均,则一种方法将是通过移除后缀部分来对列的Event子集使用split.default(如果是data.frame,则data.frame将为重复列名创建后缀.1、.2等,以使其唯一),使用sapply循环list,并获得rowMeans
Event
split.default
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左右
1:3
1:(ncol(df1)-18
sapply(1:3, \(i) rowSums(df1[i + (0:2)*9], na.rm = TRUE))
1条答案
按热度按时间vlju58qv1#
如果要被平均的列具有“Event”后跟数字的模式,并且希望仅对具有相同重复前缀的列进行平均,则一种方法将是通过移除后缀部分来对列的
Event
子集使用split.default
(如果是data.frame,则data.frame将为重复列名创建后缀.1、.2等,以使其唯一),使用sapply
循环list
,并获得rowMeans
另一个选项是按位置索引的子集(不清楚列的总数-可能需要将
1:3
更改为1:(ncol(df1)-18
左右