gpt4 book ai didi

R apply 函数返回日期变量的数值

转载 作者:行者123 更新时间:2023-12-02 10:55:37 25 4
gpt4 key购买 nike

我有一个 R 数据框,其中包含日期序列。我想从现有数据框创建一个数据框,其中包含一个月前的日期。例如,让 x 为初始数据帧

x = data.frame(dt = c("28/02/2000","29/02/2000","1/03/2000","02/03/2000"))

我需要的数据框 y 是

y = c("28/01/2000","29/01/2000","1/02/2000","02/02/2000")

列表很大,所以我不想循环。我创建了一个内联函数,当我给出单独的日期时,该函数可以正常工作。

datefun <- function(x) seq(as.Date(strptime(x,format = "%d/%m/%Y")), length =2, by = "-1 month")[2]

datefun("28/02/2000") gives "28/01/2000" as an output

但是当我在 R apply 中使用它时,它会给出随机数值。

apply(x,1,function(x) datefun(x))

其输出是

[1] 10984 10985 10988 10989

我不知道这些数字是从哪里生成的,我是否遗漏了一些东西。

最佳答案

您不应使用apply,因为结果将以矩阵形式返回。 R 中的矩阵无法存储 Date 类的值。您必须使用 lapply 来代替。这将返回结果列表。这些结果可以与 Reducec 结合起来创建一个 Date 向量。

Reduce(c, lapply(x$dt, datefun))
# [1] "2000-01-28" "2000-01-29" "2000-02-01" "2000-02-02"

关于R apply 函数返回日期变量的数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46357983/

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