r - 从 data.frames 列表中拆分 data.frame、排序和子集
问题描述
我有一个大的data.frame,看起来像这样:
Statistic1 fdr1 Value1 Statistic2 fdr2 Value2
2 0.0001 Signif 1.8 0.001 Signif
0.3 0.13 0 5 0.5 0
1.5 0.01 Signif 0.4 0.009 Signif
我想将数据框每 3 列拆分一次,例如 Statistic1、fdr1 和 Value1。然后按 Statistic* 列按降序对每个拆分的 data.frame 进行排序,并取每个排序后的 data.frames 的前 20 行名称,这些行名对应于排序后的 data.frame 的 Value* 列中的 Signif 标签。
期望的输出
> df1
> Statistic1 fdr1 Value1
> 2 0.0001 Signif
> 1.5 0.01 Signif
> Statistic2 fdr2 Value2
> 1.8 0.001 Signif
> 0.4 0.009 Signif
从每个单独的 data.frame 中,我将获取前 20 个行名。
任何人都可以帮助我吗?
解决方案
您可以使用 分割数据框split.default
。遍历列表并执行所需的操作。翻译你的要求会给,
lapply(split.default(df, gsub('\\D+', '', names(df))), function(i)
{i <- i[i[3] != 0,];
i <- i[order(i[1], decreasing = TRUE),];
i[1:20,]})
但是,请注意,由于您的示例只有 3 行,因此执行最后一个条件 ( 1:20
) 将导致NA
行
推荐阅读
- javascript - 在使用谷歌地图进行拖动和自动完成后,我将如何获得国家名称?
- android - 房间库 - 初始化光标错误?
- reactjs - 渲染时数组丢失
- ios - 在两个不同的构建中从一个数组中检索项目会返回不一致的结果
- java - 我想使用可点击的 textView 向下滚动到文本正文
- matlab - 如何在matlab中确定随机森林中的树数?
- amazon-web-services - 每个 EC2 都需要一个公共子网吗?
- python - 无需重新加载页面即可触发瓶子功能
- javascript - JS getElementById 仅在检查元素后可见
- jquery - 解释以下 jQuery: $('h1').append($('h1 + h2'));