分享
三行代码  ›  专栏  ›  技术社区  ›  EGM8686

基于函数的R tidyverse to sumif

  •  0
  • EGM8686  · 技术社区  · 3 天前

    我有这样一个df:

    df1型

    var1 var2 text
    1    0    A 
    1    1    A
    0    1    B
    

    所以我想基于sumif函数生成两个新的:

    df2型

    text var1   var2
    A    2      1
    B    0      1
    tot  2      4
    

    还有。。。

    text var1   var2
    A    100    50
    B    0      50
    

    所以第一个基于计数,第二个基于列%

    谢谢。

    1 回复  |  直到 3 天前
        1
  •  1
  •   Ronak Shah    3 天前

    得到 df2

    library(dplyr)
    
    df1 %>% group_by(text) %>% summarise_all(sum) %>% janitor::adorn_totals('row')
    
    #  text var1 var2
    #     A    2    1
    #     B    0    1
    # Total    2    2
    

    df3

    df1 %>% group_by(text) %>% summarise_all(sum) %>% mutate_at(-1, ~./sum(.) * 100)
    
    #  text   var1  var2
    #  <fct> <dbl> <dbl>
    #1 A       100    50
    #2 B         0    50