使用data.table [duplicate]选择组中的x最高值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用data.table [duplicate]选择组中的x最高值相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
如何在data.table中为每个组选择x最高值?
例如,我想为每个组(日期)取两个最高值(Val)。所以对于这个数据集:
Date Name Val
01/01/2010 A 3
01/01/2010 B 2
01/01/2010 C 1
02/01/2010 A 4
02/01/2010 B 2
02/01/2010 C 3
02/01/2010 D 1
代码应该返回:
Date Name Val
01/01/2010 A 3
01/01/2010 B 2
02/01/2010 A 4
02/01/2010 C 3
答案
df <- read.table(text = "Date Name Val
01/01/2010 A 3
01/01/2010 B 2
01/01/2010 C 1
02/01/2010 A 4
02/01/2010 B 2
02/01/2010 C 3
02/01/2010 D 1",
header = TRUE, stringsAsFactors = FALSE)
setDT(df)
df[, max_val := max(Val), by = Date]
df[, max_sec := order(Val, decreasing = T)[2], by = Date]
df <- df[Val == max_val | Val == max_sec, ]
df[, c("max_val", "max_sec") := NULL]
Date Name Val
1: 01/01/2010 A 3
2: 01/01/2010 B 2
3: 02/01/2010 A 4
4: 02/01/2010 C 3
以上是关于使用data.table [duplicate]选择组中的x最高值的主要内容,如果未能解决你的问题,请参考以下文章
data.table 中的 dplyr::slice [重复]
包含 data.table 名称的变量已就地更改? [复制]