我有以下数据集:
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)))
如何提取最接近零的负数的行?
谢谢!
此作品:
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