gpt4 book ai didi

r - 我将如何为特定列中的每个值添加一个总计行,该行基于其他列进行计算,

转载 作者:行者123 更新时间:2023-12-05 03:02:26 25 4
gpt4 key购买 nike

假设我有这个数据框

enter image description here

我要的是这个

enter image description here

我想做的是创建对月份变量进行分组的行,然后获取总变量的总和,以及该月所有个人值的 days_month 变量的唯一值。

我只是想知道是否有一种简单的方法可以做到这一点,它不涉及多次传播和收集装饰总数,我必须在总计相加后将一个月中的天数改回原始值等。是否有有快速简便的方法吗?

最佳答案

一个选项是按“month”、“days_in_month”分组并通过 group_mapping

应用 adorn_total
library(dplyr)
library(janitor)
df1 %>%
group_by(month, days_in_month) %>%
group_map(~ .x %>%
adorn_totals("row")) %>%
select(names(df1))
# A tibble: 10 x 4
# Groups: month, days_in_month [2]
# month person total days_in_month
# <int> <chr> <int> <int>
# 1 1 John 7 31
# 2 1 Jane 18 31
# 3 1 Tim 20 31
# 4 1 Cindy 11 31
# 5 1 Total 56 31
# 6 2 John 18 28
# 7 2 Jane 13 28
# 8 2 Tim 15 28
# 9 2 Cindy 9 28
#10 2 Total 55 28

如果我们需要其他统计数据,我们可以在 group_map 中获取它

library(tibble)
df1 %>%
group_by(month, days_in_month) %>%
group_map(~ bind_rows(.x, tibble(person = "Mean", total = mean(.x$total))))

数据

df1 <- structure(list(month = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), person = c("John", 
"Jane", "Tim", "Cindy", "John", "Jane", "Tim", "Cindy"), total = c(7L,
18L, 20L, 11L, 18L, 13L, 15L, 9L), days_in_month = c(31L, 31L,
31L, 31L, 28L, 28L, 28L, 28L)), class = "data.frame", row.names = c(NA,
-8L))

关于r - 我将如何为特定列中的每个值添加一个总计行,该行基于其他列进行计算,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54831166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com