slice(which.max()有条件

问题描述 投票:0回答:1

我有以下数据集:

ID, diff

1  -40

1  -21

1  -5

1  1

1  6

1  7

...

ID变量的值为1,2,3,4,5,...,而diff是数字变量。现在,从数据集中,我想为每个ID提取最接近零且为负的diff的行。因此,我希望diff的负值最高。在上面的数据集中,对于ID 1,我想提取3个值(1 -5)的行。

以下代码可以提取绝对值最接近0的行:

library(dplyr)

dataset22 = dataset1 %>%  group_by(ID) %>% slice(which.min(abs(diff)))

如何提取最接近零的负数的行?

谢谢!

r slice which
1个回答
0
投票

此作品:

library(dplyr)

df <- data.frame(ID = c(1, 1, 1, 1, 1, 1),
                 diff = c(-40, -21, -5, 1, 6, 7))

df %>% 
  group_by(ID) %>% 
  filter(diff < 0) %>%
  summarise(min_negative_diff = max(diff))

#> # A tibble: 1 x 2
#>      ID min_negative_diff
#>   <dbl>             <dbl>
#> 1     1                -5
© www.soinside.com 2019 - 2024. All rights reserved.