gpt4 book ai didi

r - 查找每个组的最大值并返回另一列

转载 作者:行者123 更新时间:2023-12-04 09:41:58 28 4
gpt4 key购买 nike

给定以下测试矩阵:

testMatrix <- matrix( c(1,1,2,10,20,30,300,100,200,"A","B","C"), 3, 4)

colnames(testMatrix) <- c("GroupID", "ElementID", "Value", "Name")

在这里,我想找到每组的最大值,然后返回该列的名称。
例如。我期望 1、A 和 2、C。如果与 max 有平局,那么第一场比赛就可以了。
之后,我必须使用新列“GroupName”将其附加到矩阵

我怎样才能做到这一点?

我已经有了 Group, Max Value 组合:
groupMax <- aggregate (as.numeric(testMatrix[,3]), by=list( testMatrix[,1] ), max )

我过去向矩阵添加列的方式是这样工作的(假设已经有一个矩阵 groupNames 与 GroupID、Name 组合):
testMatrix <- cbind ( testMatrix, groupNames[match( testMatrix[,1], groupNames[,1] ), 2] ) 

最佳答案

一个 data.table时间和内存效率以及句法优雅的解决方案

library(data.table)
DT <- as.data.table(testMatrix)
DT[,list(Name = Name[which.max(Value)]),by = GroupID]

关于r - 查找每个组的最大值并返回另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12039681/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com