r - 按组和列之间查找最小值
问题描述
我试图在不同的列和组中找到最小值。我的数据的一个小样本看起来像这样:
group cut group_score_1 group_score_2
1 a 1 3 5.0
2 b 2 2 4.0
3 a 0 2 2.5
4 b 3 5 4.0
5 a 2 3 6.0
6 b 1 5 1.0
我想按组分组,对于每个组,在两个组分数中找到包含最小组分数的行,然后还得到包含最小值的列的名称(group_score_1 或 group_score_2),所以基本上我的结果应该是像这样的东西:
group cut group_score_1 group_score_2
1 a 0 2 2.5
2 b 1 5 1.0
我尝试了一些想法,最终想出了将其分成几个新的数据框,按组过滤并选择相关列,然后使用which.min()
,但我确信有一种更有效的方法可以做到这一点。不知道我错过了什么。
解决方案
我们可以使用data.table
方法
library(data.table)
setDT(df)[df[, .I[which.min(do.call(pmin, .SD))],
group, .SDcols = patterns('^group_score')]$V1]
# group cut group_score_1 group_score_2
#1: a 0 2 2.5
#2: b 1 5 1.0
推荐阅读
- keras - 此 VAE 模型无法编译
- java - @Scheduled 注释中使用的线程是否在完成执行之前释放到池中?
- python - 无法在安装了 anaconda 的机器上运行库
- java - 来自 Spring 的 Json 响应中的时区问题
- java - 频率分析,有人知道如何解决这个问题。我不知道这封信能来多少次
- c# - 范围报告不生成报告
- amazon-web-services - KOPS 如何在 AWS 中重新创建主节点?
- c# - 使用 Selenium C# 无法单击单选按钮
- java - 操作超时-tomcat亚马逊服务器
- reactjs - TypeError:无法读取未定义的属性“baseVal”