【问题标题】:Calculation inside a data frame based on two columns基于两列的数据框中的计算
【发布时间】:2021-03-05 16:22:26
【问题描述】:

比如说,我有一个包含 3 列的数据框

ID     Type      Amount
1      4         100
1      4         50
1      1         20
2      4         30
2      1         10

我想在数据框中根据 ID 和 Type 组进行一些计算。例如,我想为数据框的所有 ID 计算 类型 4 的金额总和 - 类型 1 的金额总和,并将其附加到末尾,所以最终的结果会是这样的

ID     Type      Amount    Calculation
1      4         100       (100 + 50) - 20
1      4         50        (100 + 50) - 20
1      1         20        (100 + 50) - 20
2      4         30        30 - 10
2      1         10        30 - 10

有没有简单的方法来实现这个?很简单,因为我想做一些更复杂的计算,但想先搞清楚基础知识。

我试着用dplyr解决这个问题

类似

df %>%
 group_by(ID) %>%
 sum( Calculation = Amount[Type == 4] - Amount[Type == 1])

这为我的数据框中的所有列提供了相同的值,所以它似乎不起作用..有什么想法吗?

【问题讨论】:

    标签: r dataframe dplyr tidyverse data-manipulation


    【解决方案1】:

    dplyr 满足您的需求

    library(dplyr)
    df <- data.frame(ID = c(1,1,1,2,2), Type = c(4,4,1,4,1), Amount = c(100,50,20,30,10))
    
    df %>% group_by(ID) %>% mutate(Calculation = sum(Amount[Type == 4]) - sum(Amount[Type == 1]))
    
    # A tibble: 5 x 4
    # Groups:   ID [2]
         ID  Type Amount Calculation
      <dbl> <dbl>  <dbl>       <dbl>
    1     1     4    100         130
    2     1     4     50         130
    3     1     1     20         130
    4     2     4     30          20
    5     2     1     10          20
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-05
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 2021-12-05
      • 2016-03-03
      相关资源
      最近更新 更多