我希望在R中对分组数据进行条件切片。
我想按
df <- data.frame(grp = c(1, 1, 2, 2, 3, 3),
vehicle = c("car", "boat", "bike", "car", "plane", "bike"))
#> grp vehicle
#> 1 1 car
#> 2 1 boat
#> 3 2 bike
#> 4 2 car
#> 5 3 plane
#> 6 3 bike
我想按
grp
分组,只保留第一行等于car
的组。这是解决方案。#> grp vehicle
#> 1 1 car
#> 2 1 boat
我该怎么做?我认为这可能是更好的版本。
library(dplyr)
df %>% group_by(grp) %>% filter(any(slice_head(vehicle == "car")))
#, Error in `filter()`:
#, ! Problem while computing `..1 =
...
df %>% group_by(grp) %>% filter(vehicle[1] == 'car')
可以翻译为:在数据框df中,按照grp列进行分组,然后筛选出车辆列(vehicle)第一个值为'car'的行。 - Darren Tsai