【问题标题】:Create a function and use a loop to calculate the cumulative date and id创建一个函数并使用循环计算累积日期和id
【发布时间】:2020-11-05 23:00:47
【问题描述】:

我有一个编码练习:创建一个“函数”,然后使用“for”按 id 和日期计算累积。我只能使用cumsum() 并且不允许所有包。

例如,我在下面创建一个数据框

df=data.frame("date"=c("1/1/2020","1/1/2020","1/1/2020","2/1/2020","2/1/2020","2/1/2020","3/1/2020","3/1/2020","3/1/2020"), "id"=c("A","B","C","A","B","C","A","B","C"),"val"=c(5,6,7,8,4,5,6,3,4))

【问题讨论】:

    标签: r function for-loop cumsum


    【解决方案1】:

    我否决了您的问题,因为 SO 不是免费的编码服务。不过,您的问题很简单,有很多方法可以解决这个问题。我必须对您的 DF 进行一些修复:

    df = data.frame(
      "date" = as.Date(c(
        "1/1/2020",
        "1/1/2020",
        "1/1/2020",
        "2/1/2020",
        "2/1/2020",
        "2/1/2020",
        "3/1/2020",
        "3/1/2020",
        "3/1/2020"
      ), format = "%d/%m/%Y"),
      "id" = c("A", "B", "C", "A", "B", "C", "A", "B", "C"),
      "val" = c(5, 6, 7, 8, 4, 5, 6, 3, 4),
      stringsAsFactors = FALSE
    )
    

    后跟(dplyr 示例,只是众多方法之一):

    library(dplyr)
    summary_df <- df %>%
      group_by(date, id) %>%
      summarise(sum = cumsum(val))
    

    导致:

    > summary_df
    # A tibble: 9 x 3
    # Groups:   date [3]
      date       id      sum
      <date>     <chr> <dbl>
    1 2020-01-01 A         5
    2 2020-01-01 B         6
    3 2020-01-01 C         7
    4 2020-01-02 A         8
    5 2020-01-02 B         4
    6 2020-01-02 C         5
    7 2020-01-03 A         6
    8 2020-01-03 B         3
    9 2020-01-03 C         4
    

    【讨论】:

    • 感谢您的回答,我想创建一个“函数”并使用“for”而不使用dplyr的问题
    • 你为什么想要那个?这是编码练习的一部分吗?
    • 是的,没错,我必须使用函数 cumsum 和 for
    • 尝试嵌套 for 循环,在其中循环遍历日期和 id 列的唯一元素
    猜你喜欢
    • 2019-07-08
    • 2023-01-18
    • 2020-07-27
    • 2018-11-08
    • 2013-12-02
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多