r - 如何根据位置查找特定列的平均值
问题描述
嗨,我正在尝试一种根据特定列在数据框中的位置来查找其行均值的方法。有问题的数据框如下所示。
输入(头(df)):
structure(list(UUO_miRNA_O.1 = c(7.32066744158959, 3.31345009504282
), UUO_miRNA_O.2 = c(7.43053887142984, 3.23035600235404), UUO_miRNA_O.3 = c(7.68570216473529,
3.29381316430644), UUO_miRNA_3.1 = c(7.34325738531531, 3.67473069667518
), UUO_miRNA_3.2 = c(7.3048971830047, 3.69280901141072), UUO_miRNA_3.3 = c(7.41661827643479,
3.06893743175378), UUO_miRNA_3.4 = c(7.43802624369909, 3.43504336111569
), UUO_miRNA_7.1 = c(7.10631159462831, 3.72163460891437), UUO_miRNA_7.2 = c(6.81674699622009,
3.89466659628421), UUO_miRNA_7.3 = c(6.78711965034826, 3.94771804243868
), UUO_miRNA_7.4 = c(6.54435389593729, 4.14166831423149), UUO_miRNA_14.1 = c(6.84918460025062,
3.85693219667159), UUO_miRNA_14.2 = c(6.68019422109324, 3.69409920554401
), UUO_miRNA_14.3 = c(6.40959585449136, 3.64231329240453), UUO_miRNA_14.4 = c(6.59104287861439,
3.64138476787772)), row.names = c("mmu-let-7a-1-3p", "mmu-let-7a-2-3p"
), class = "data.frame")
数据具有不同数量的重复。我想知道每种实验类型获取每个基因的行均值的方法。
目前我正在使用这种类型的代码来获得理想的输出。
apply(df[1:3], 1, mean)
apply(df[4:7], 1, mean)
apply(df[8:11], 1, mean)
apply(df[12:15], 1, mean)
我曾尝试将其变成一个循环,但由于重复次数不一致而收效甚微。另外,这段代码不是最令人愉快的,所以如果有 R 中的方法或可以建议的函数,我将非常感激。
解决方案
您可以尝试使用sub
去除点后的名称。循环新的唯一名称并计算rowMeans
与每个名称匹配的数据框子集的
sapply(unique(sub('\\..*', '', names(df))), function(i) rowMeans(df[grepl(i, names(df))]))
# UUO_miRNA_O UUO_miRNA_3 UUO_miRNA_7 UUO_miRNA_14
#mmu-let-7a-1-3p 7.478969 7.37570 6.813633 6.632504
#mmu-let-7a-2-3p 3.279206 3.46788 3.926422 3.708682
推荐阅读
- sql - 从行和列中的 Json 数组中获取数据
- android - MultiAutoCompleteTextView android限制用户多次选择相同的值
- c++ - 在类中使用随机生成器时的性能问题
- python - 访问主页时出现 Pythonanywhere 错误
- android - 如何从 Kotlin 中的内部类 [AsyncTask] 访问扩展功能?
- .net - 如何在 API 管理中配置 Azure AAD 并从 .NET 中的 Web/控制台应用程序调用 API 管理端点
- laravel - Laravel 6.9 belongsToMany 关系返回一个集合
- java - 在 Java 中不使用任何凭据即可阅读 Google 电子表格
- arrays - 按单元格中的倒数第二个字母排序数据,然后是第一个 - Google Apps Script / Google Sheets
- git - Git 仅在 GitLab 中记录模棱两可的参数