gpt4 book ai didi

R - which 和 which.max 融合

转载 作者:行者123 更新时间:2023-12-04 11:06:03 25 4
gpt4 key购买 nike

我有一个简单的问题,我该如何使用 whichwhich.max同时。

我想选择最大值epnum为行 id == B13639J2 .
我需要检索 row number因为我需要对变量进行一些手动更改。

所以最大 epnum行的id == 'B13639J2'

           id   epnum start
95528 B13639J2 1 0
95529 B13639J2 2 860
95530 B13639J2 3 1110
95531 B13639J2 4 1155
95532 B13639J2 5 1440

我想知道我怎么能简单地做类似的事情
dta[which(dta$id == 'B13639J2' & which.max(dta$epnum)), ] 

最后,我需要删除 Blob 行。

谢谢。

数据
dta = structure(list(id = c("B13639J1", "B13639J1", "B13639J1", "B13639J1", 
"B13639J1", "B13639J1", "B13639J1", "B13639J1", "B13639J2", "B13639J2",
"B13639J2", "B13639J2", "B13639J2"), epnum = c(4, 5, 6, 7, 8,
9, 10, 11, 1, 2, 3, 4, 5), start = c(420, 425, 435, 540, 570,
1000, 1310, 1325, 0, 860, 1110, 1155, 1440)), .Names = c("id",
"epnum", "start"), row.names = 95520:95532, class = "data.frame")

最佳答案

如果我们使用数字索引( which/which.max ),一种选择是 slice来自 dplyr .这里是双 slice需要。我们首先子集“id”,即“B13639J2”,然后再次子集 max 'epnum'
值。

 library(dplyr)
slice(dta, which(id=='B13639J2')) %>%
slice(which.max(epnum))
# id epnum start
#1 B13639J2 5 1440

或者我们按“id”分组, arrange 'epnum' 按降序排列,和 filter具有指定“id”的第一行。
  dta1 <- dta %>% 
group_by(id) %>%
arrange(desc(epnum)) %>%
filter(id=='B13639J2', row_number()==1L)

如果我们想从数据集中删除这一行,一个选项是 anti_join与原始数据集。
  anti_join(dta, dta1)

或者通过更改 filter这可以做的选项
  dta %>%
group_by(id) %>%
arrange(desc(epnum)) %>%
filter(!(id=='B13639J2' & row_number()==1L))

关于R - which 和 which.max 融合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31687870/

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