gpt4 book ai didi

r - 如何在R中的mutate函数中使用if else

转载 作者:行者123 更新时间:2023-12-04 09:35:25 26 4
gpt4 key购买 nike

我有一个数据框 DT_new有 4 列:

  • 毕业(日期格式)
  • 工作(日期格式)
  • 已婚(日期格式)
  • Jumlah(双格式)

  • 样本:
     Graduated         Work      Married   Jumlah
    2015-05-01 2015-05-02 2015-05-03 20
    NA 2015-05-02 2015-05-03 20
    NA NA 2015-05-03 20
    NA 2015-05-02 NA 20

    我需要聚合 Jumlah按日期在 GraduatedWorkMarried
  • Graduated值不是 NA , 使用日期来自 Graduated
  • Graduated值为 NA ,使用来自 Work 的另一个值或者Married

  • 我想要的格式是:
         Dates   Total 
    2015-05-01 10
    2015-05-02 40
    2015-05-03 30

    我试过 aggregate在 R 中使用 group by 但仅按 1 列分组(已毕业),例如:
    DT_Totals = DT_Total %>%
    group_by(Graduated) %>%
    summarise(Total= sum(Jumlah)) %>%
    arrange(Graduated)

    我该如何处理我的问题?

    最佳答案

    您需要首先创建新列,然后对它们进行分组。

    我有函数首先返回定义为向量中的 NA 元素:

    first_not_na <- function(...) {
    Reduce(list(...), f=function(x,y) {
    x[is.na(x)] <- y[is.na(x)]
    x
    })
    }

    你可以使用它如下
    DT_new %>%
    group_by(Date = first_not_na(Graduated, Work, Married)) %>%
    summarise(Total = sum(Jumlah)) %>%
    arrange(Date)

    或拆分为两个步骤:
    DT_new %>%
    mutate(Date = first_not_na(Graduated, Work, Married)) %>%
    group_by(Date) %>%
    summarise(Total = sum(Jumlah)) %>%
    arrange(Date)

    关于r - 如何在R中的mutate函数中使用if else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31691292/

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