【问题标题】:row summing selectively in tidyverse (dplyr) in R在R中的tidyverse(dplyr)中选择性地行求和
【发布时间】:2020-08-24 12:43:26
【问题描述】:

我有一个快速的tidyverse 问题。在gg:

如何将行 (1 - 3) 和 (2 - 4) 的 salary 值相减,然后将它们相减。总体而言,即:行 (1 - 3) - (2 - 4)

library(tidyverse)
data <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/salary.csv')

gg <- data %>% dplyr::select(female,over10,salary) %>% group_by(over10,female) %>% 
summarise(across(.fns = mean), n = n())

【问题讨论】:

    标签: r dataframe dplyr tidyverse


    【解决方案1】:

    您在帖子中没有提到这一点,但我认为为什么要减去行 c(1, 3) 和 (2, 4) 是因为 female 列中的 (0, 1) 值。如果是这样,您可以 group_by female 列并使用 diff 计算差异。

    library(dplyr)
    gg %>%
      group_by(female) %>%
      summarise(salary = diff(salary)) %>%
      summarise(salary = -diff(salary))
    
    # salary
    #   <dbl>
    #1  13891.
    

    如果您真的想根据行号执行此操作:

    diff(gg$salary[c(1, 3)] - gg$salary[c(2, 4)])
    #[1] 13891.
    

    【讨论】:

    • 你的意思是gg %&gt;% group_by(female) %&gt;% summarise(sd = sd(salary)) 吗?
    • 哦..你的意思是在你原来的data?您可以同时应用多个功能。 data %&gt;% select(female,over10,salary) %&gt;% group_by(over10,female) %&gt;% summarise(across(.fns = list(mn = mean, sd = sd)), n = n())
    猜你喜欢
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多