gpt4 book ai didi

r - 如何对不同行的值求和并汇总为一行 (R)

转载 作者:行者123 更新时间:2023-12-03 18:14:15 24 4
gpt4 key购买 nike

我的员工付款数据显示为一行 = 一个付款记录。变量描述了名称、付款方式和值(value)。

我的最终目标是拥有一个数据框,其中每个员工 = 一行,其中汇总了不同类型的付款,并且每种付款类型都有自己的变量。

请看例子:

data <- data.frame("name" = c("John", "John", "John", "Marie", "Marie", "Alex"),
"payment.reason" = c("bonus", "bonus", "commission", "commission", "commission", "discretionary bonus"),
"value" = c(1000, 5000, 2500, 1500, 500, 2500))

看起来像这样:
   name      payment.reason value
1 John bonus 1000
2 John bonus 5000
3 John commission 2500
4 Marie commission 1500
5 Marie commission 500
6 Alex discretionary bonus 2500

这是我追求的最终结果:
goal
name bonus commission discretionary.bonus
1 John 6000 2500 0
2 Marie 0 2000 0
3 Alex 0 0 2500

我知道我需要传播数据以将 payment.reason 值推送到列中,但我正在努力弄清楚如何对每个人的每个单独的付款类型值求和,并让数据按每个人分组。

先感谢您!

最佳答案

我们可以通过 pivot_wider 完成所有这些工作在 tidyr :

library(tidyr)

pivot_wider(data, name, names_from = payment.reason, values_from = value, values_fn = list(value = sum))
#> # A tibble: 3 x 4
#> name bonus commission `discretionary bonus`
#> <fct> <dbl> <dbl> <dbl>
#> 1 John 6000 2500 NA
#> 2 Marie NA 2000 NA
#> 3 Alex NA NA 2500

创建于 2019-12-23 由 reprex package (v0.3.0)

请注意(如@AlexB 的回答),您还可以添加 values_fill = list(value = 0)如果您需要明确的 0 s 而不是 NA .

关于r - 如何对不同行的值求和并汇总为一行 (R),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59457402/

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