【问题标题】:Calculate values based on conditions and add new rows根据条件计算值并添加新行
【发布时间】:2023-01-23 21:39:21
【问题描述】:

我有以下示例数据框:

first_column <- c("A", "B", "C", "A", "B", "C", "A", "B", "C")
second_column <- c("aa", "aa", "aa", "bb", "bb", "bb", "cc", "cc", "cc")
third_column <- c("10", "12", "13", "15", "20", "21", "22", "24", "26")

df <- data.frame(first_column, second_column, third_column)

它看起来像这样:

first_column second_column third_column
            A            aa           10
            B            aa           12
            C            aa           13
            A            bb           15
            B            bb           20
            C            bb           21
            A            cc           22
            B            cc           24
            C            cc           26

对于第二列的每个类别,我想为该类别计算一个新值 (A - B- C = D)。我希望新数据框看起来像这样:

first_column second_column third_column
            A            aa           10
            B            aa           12
            C            aa           13
            A            bb           15
            B            bb           20
            C            bb           21
            A            cc           22
            B            cc           24
            C            cc           26
            D            aa           -15   (10 - 12 - 13)
            D            bb           -26   (15 - 20 - 21)
            D            cc           -28   (22 - 24 - 26)

谁能帮我解决这个问题?如果可能的话,我更喜欢使用 dplyr 库的解决方案。

【问题讨论】:

    标签: r dataframe


    【解决方案1】:
    library(dplyr)
    df %>% 
      group_by(second_column) %>% 
      summarise(first_column = "D", 
                third_column = third_column[1] - sum(third_column[2:3])) %>% 
      bind_rows(df, .)
    
       first_column second_column third_column
    1             A            aa           10
    2             B            aa           12
    3             C            aa           13
    4             A            bb           15
    5             B            bb           20
    6             C            bb           21
    7             A            cc           22
    8             B            cc           24
    9             C            cc           26
    10            D            aa          -15
    11            D            bb          -26
    12            D            cc          -28
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2017-10-21
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 2018-08-07
      相关资源
      最近更新 更多