簡體   English   中英

在 r 中,按 var 分組並按條件按其他 var 過濾

[英]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()
  • output
# 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM