【问题标题】:Group by with condition using r [duplicate]使用 r 按条件分组
【发布时间】:2023-04-11 00:39:01
【问题描述】:

我有一个数据框 df,我需要按 A 列进行分组,条件是如果 B 列值为是,C 列值为 C,则最终列值为 C,否则最终列值为 U。

A=c("w","x","w","z")
B=c("yes","No","yes","No")
C=c("C","U","C","U")

df <- data.frame(A,B,C)

final=c("C","U","C","U")

A=c("w","x","w","z")
B=c("yes","No","yes","No")
C=c("C","U","C","U")

DF <- data.frame(A,B,C,U)

我的结果数据框将是 DF

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    你可以使用:

    library(dplyr)
    
    df %>%
      group_by(A) %>%
      mutate(final = if(any(B == 'yes')) 'C' else 'U') 
      #Without if/else
      #mutate(final = c('U', 'C')[any(B == 'yes') + 1])  
    
    # A     B     C     final
    #  <chr> <chr> <chr> <chr>
    #1 w     yes   C     C    
    #2 x     No    U     U    
    #3 w     yes   C     C    
    #4 z     No    U     U       
    

    如果要检查的条件很多,可以使用case_when

    df %>%
      group_by(A) %>%
      mutate(final = case_when(any(B == 'yes') ~'C',
                              TRUE ~ 'U'))
    

    【讨论】:

    • 它正在工作。谢谢。
    猜你喜欢
    • 2013-08-09
    • 2022-12-06
    • 2021-10-30
    • 2015-05-12
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 2021-09-29
    • 2017-06-04
    相关资源
    最近更新 更多