gpt4 book ai didi

r - 选择每组中具有最大值的行

转载 作者:行者123 更新时间:2023-12-03 05:34:44 25 4
gpt4 key购买 nike

在每个主题都有多个观察值的数据集中。对于每个主题,我想选择具有最大值“pt”的行。例如,使用以下数据集:

ID    <- c(1,1,1,2,2,2,2,3,3)
Value <- c(2,3,5,2,5,8,17,3,5)
Event <- c(1,1,2,1,2,1,2,2,2)

group <- data.frame(Subject=ID, pt=Value, Event=Event)
# Subject pt Event
# 1 1 2 1
# 2 1 3 1
# 3 1 5 2 # max 'pt' for Subject 1
# 4 2 2 1
# 5 2 5 2
# 6 2 8 1
# 7 2 17 2 # max 'pt' for Subject 2
# 8 3 3 2
# 9 3 5 2 # max 'pt' for Subject 3

主题 1、2 和 3 的最大 pt 值分别为 5、17 和 5。

我怎样才能首先找到每个主题的最大 pt 值,然后将此观察结果放入另一个数据框中?生成的数据框应该只包含每个主题的最大 pt 值。

最佳答案

这是一个 data.table 解决方案:

require(data.table) ## 1.9.2
group <- as.data.table(group)

如果您想保留每个组中与 pt 最大值相对应的所有条目:

group[group[, .I[pt == max(pt)], by=Subject]$V1]
# Subject pt Event
# 1: 1 5 2
# 2: 2 17 2
# 3: 3 5 2

如果您只想要 pt 的第一个最大值:

group[group[, .I[which.max(pt)], by=Subject]$V1]
# Subject pt Event
# 1: 1 5 2
# 2: 2 17 2
# 3: 3 5 2

在这种情况下,这没有什么区别,因为数据中的任何组内都不存在多个最大值。

关于r - 选择每组中具有最大值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24558328/

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