[英]Group by a var and filter by an other var on condition, in r
我有以下df:
data <- data.frame(group = c("A", "A", "A", "B", "C", "C", "C", "C"),
x = c("A1", "A12", "A123", "BA", "C12", "CA", "C123", "C132"),
y = c("ir1", "ir2", "ir3", "ir4", "ir5", "ir6", "ir7", "ir8"))
data
> data
group x y
1 A A1 ir1
2 A A12 ir2
3 A A123 ir3
4 B BA ir4
5 C C12 ir5
6 C CA ir6
7 C C123 ir7
8 C C132 ir8
我想按組變量和 select 對具有最小字符的 x 值進行分組。 所需的 output 是
group x y
1 A A1 ir1
2 B BA ir4
3 C CA ir6
謝謝
嘗試這個
library(dplyr)
data |> group_by(group) |>
summarise(x = x[which.min(nchar(x))] ,
y = y[which.min(nchar(x))]) |> ungroup()
# A tibble: 3 × 3
group x y
<chr> <chr> <chr>
1 A A1 ir1
2 B BA ir4
3 C CA ir5
一個簡潔的選項是使用dplyr::slice_min(nchar(...))
:
library(dplyr)
data <- data.frame(group = c("A", "A", "A", "B", "C", "C", "C", "C"),
x = c("A1", "A12", "A123", "BA", "C12", "CA", "C123", "C132"),
y = c("ir1", "ir2", "ir3", "ir4", "ir5", "ir6", "ir7", "ir8"))
data %>%
group_by(group) %>%
slice_min(nchar(x)) %>%
ungroup()
#> # A tibble: 3 × 3
#> group x y
#> <chr> <chr> <chr>
#> 1 A A1 ir1
#> 2 B BA ir4
#> 3 C CA ir6
由代表 package (v2.0.1) 於 2022 年 7 月 27 日創建
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.