gpt4 book ai didi

R - 问题 : Mutate doesn't create a new column

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

我有一个带有 2 个变量的数据框:ID 和交付日期。
我打算做的是按 ID 对数据帧进行分组,然后在交付日期中添加一个月 + i,其中“i”是同一 ID 的第 n 次出现。一个例子:

ID   Date.Delivery   New.Date
001 2020-01-01 2020-02-01 (+1 month)
001 2020-01-01 2020-03-01 (+2 months, as there is a 2nd occurence of the same ID)
002 2020-01-01 2020-02-01 (+1 month, as this is the first occurence of a new ID)

为了实现这一点,我尝试使用以下代码:

DF <- DF %>%
group_by(ID) %>%
mutate(New.Month = for(i in 1:n()) {DF$Date.Delivery[i] %m+% months(0+i)})

它似乎有效,因为它给了我新的日期作为数字。问题是它不会在 DF 中创建新列。实际上,当我调用 DF$New.Month 时,会出现消息“未知列:“New.Month”。然后当我查看 DF 时,最后有一种 data.frame 或列表,而不是带有以下内容的新列:

-attr(*, "groups")=Classes 'tbl_df' , 'tbl' and 'data.frame': 1791 obs. of 2 variables :
..$ Num.Contrat: chr "001" "002" "003" ....
..$ .rows: List of 1791
.. ..$ : int 15205
.. ..$ : int 16190 16191 16192 16193 16194
.. ..$ : int 5989 5990 5991
..
[... 20 lines omitted]

我试图弄清楚为什么我的代码没有像 mutate 那样创建一个新列。

谢谢你的帮助

最佳答案

您好,欢迎来到 SO。使用 dplyr这应该为您提供所需的输出:

df %>%
group_by(ID) %>%
mutate(New.Month = Date.Delivery %m+% months(row_number(ID)))

# A tibble: 3 x 3
# Groups: ID [2]
# ID Date.Delivery New.Month
# <chr> <date> <date>
# 1 001 2020-01-01 2020-02-01
# 2 001 2020-01-01 2020-03-01
# 3 002 2020-01-01 2020-02-01

关于R - 问题 : Mutate doesn't create a new column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62039550/

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