【问题标题】:How to add values from 2 rows together based on 2 conditions R.?如何根据 2 个条件 R. 将 2 行中的值相加?
【发布时间】:2021-06-23 03:41:44
【问题描述】:

所以在类别下,有类别 c 和类别 c-ETS。 如果年份和月份相同,我想将两行的值相加,并返回 c 类下的值。

例如,对于 2014 年的一月,它将是 309 + 123 = 432. 432

最终结果应该是第二张图片中的内容。

应该在 r 上的结果是每个关注者

【问题讨论】:

  • 请使用 dput() 分享可重现的示例

标签: r variable-assignment


【解决方案1】:

您尚未共享用于演示和检查代码的数据。不过这应该可行。

df %>% group_by(Year, Month, category = ifelse(category %in% c("Category C", "Category C-ETS"), "Category C", category)) %>% summarise(number = sum(number))

【讨论】:

    【解决方案2】:

    解决此问题的一种方法是将具有“Category C-Ets”的单元格重命名为“Category C”,然后使用 grroup_by 并从 Dplyr 汇总 这段代码解决了这个问题

    library(dplyr)
    
    df[df$category == "Category C-Ets", "category"] <-"Category C"
    
    df <- df %>%
      group_by(year, month, category) %>%
      summarize(number = sum(number))
    

    看看下面如何解决这个问题

    假设 df 是您的数据框,这就是我可以处理此任务的方法

    #sample dataframe
    df <- data.frame(year=c(2014,2014,2014,2014,2014,2014,2014,2014,2014,2014),
                     month = c(1,1,1,1,1,2,2,2,2,2),
                     category = c("Category C", "Category A", "Category C-Ets","CategoryB", "Category D", "Category C", "Category A", "Category C-Ets","CategoryB", "Category D"),
                     number = seq(100,1000,100))
    print(df)
    
    #this is how the row dataframe looks
     year month       category number
    1  2014     1     Category C    100
    2  2014     1     Category A    200
    3  2014     1 Category C-Ets    300
    4  2014     1      CategoryB    400
    5  2014     1     Category D    500
    6  2014     2     Category C    600
    7  2014     2     Category A    700
    8  2014     2 Category C-Ets    800
    9  2014     2      CategoryB    900
    10 2014     2     Category D   1000
    

    然后用“C 类”替换“C 类-Ets”

    df[df$category == "Category C-Ets", "category"] <-"Category C"
    
    print(df) 
    year month   category number
    1  2014     1 Category C    100
    2  2014     1 Category A    200
    3  2014     1 Category C    300
    4  2014     1  CategoryB    400
    5  2014     1 Category D    500
    6  2014     2 Category C    600
    7  2014     2 Category A    700
    8  2014     2 Category C    800
    9  2014     2  CategoryB    900
    10 2014     2 Category D   1000
    

    现在您可以按年月和类别对它们进行分组并对数字求和

    df <- df %>%
      group_by(year, month, category) %>%
      summarize(number = sum(number))
    
    print(df)
    
       year month category   number
      <dbl> <dbl> <chr>       <dbl>
    1  2014     1 Category A    200
    2  2014     1 Category C    400
    3  2014     1 Category D    500
    4  2014     1 CategoryB     400
    5  2014     2 Category A    700
    6  2014     2 Category C   1400
    7  2014     2 Category D   1000
    8  2014     2 CategoryB     900
    

    【讨论】:

      猜你喜欢
      • 2020-04-29
      • 1970-01-01
      • 2017-12-30
      • 2015-09-02
      • 1970-01-01
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      相关资源
      最近更新 更多