【问题标题】:Using dot "." symbol with dplyr [duplicate]使用点“。”带有dplyr的符号[重复]
【发布时间】:2020-10-27 11:07:35
【问题描述】:

我正在使用 R 探索一些数据,并寻找智能方法来计算具有数字列总数的新行。我在下面给出一个虚拟示例:

tibble(
  Group = c("Crew", "1st class", "2nd class", "3rd class"),
  Deaths = c(673, 122, 167, 528),
  Survivors = c(212, 203, 118, 178)
) %>%
  add_row(Group = "Total", Deaths = sum(.$Deaths), 
          Survivors = sum(.$Survivors)) 

我对这段代码不太满意,想知道是否存在使用 dplyr 的更优雅的方法。但这让我想到了一个简单的问题:为什么我不能用 .data$Deaths 替换 .$Deaths ? 我经常开发包,我总是在努力删除检查笔记。在那种情况下,我将无法删除点表达式...... 任何人都可以提供替代解决方案或至少解释吗?

提前致谢 ;-)

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    你可以试试janitor::adorn_totals,它至少更干净。

    tibble(
      Group = c("Crew", "1st class", "2nd class", "3rd class"),
      Deaths = c(673, 122, 167, 528),
      Survivors = c(212, 203, 118, 178)
    ) %>% janitor::adorn_totals()
    
    #     Group Deaths Survivors
    #      Crew    673       212
    # 1st class    122       203
    # 2nd class    167       118
    # 3rd class    528       178
    #     Total   1490       711
    

    【讨论】:

    • 我同意这是一种更简洁的方式,但它需要一个新的包......我已经考虑过这种用法,但我不想这样做。无论如何,谢谢你的回答!
    【解决方案2】:

    如果你想一步一步做:
    (那是更长的代码,但在某些情况下可能更好?)

    # define tibble
    df <- tibble(
      Group = c("Crew", "1st class", "2nd class", "3rd class"),
      Deaths = c(673, 122, 167, 528),
      Survivors = c(212, 203, 118, 178)
      )
      
    # summarize the two columns
    df_add <- df %>%
      summarize(Group = "Total",
                Deaths = sum(Deaths),
                Survivors = sum(Survivors))
    
    # add to tibble
    df <- df %>%
      add_row(df_add)
    

    【讨论】:

      猜你喜欢
      • 2020-01-31
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 2014-11-11
      相关资源
      最近更新 更多