【发布时间】:2021-05-16 15:49:14
【问题描述】:
我在数据库中有一个数据框,其中包含我使用 RPostgres 提取的日期维度。每个“日期”的格式为“YYYY-MM-DD”。我想添加比初始日期早一年的新日期列(标记为“lookback_date”)。
需要明确的是,如果观察的“日期”是“2000-01-01”,我想在该观察中添加一个新的“回顾日期”“1999-01-01”。不幸的是,我不知道该怎么做。通常,我会使用 Lubridate,但据我所知,它不适用于 dbplyr。到目前为止,这是我的代码的简化版本。在 mutate 函数之前,我的实际代码中的所有内容都可以正常工作。
# Packages
library(dbplyr)
library(RPostgres)
# Connect to db
drv <- dbDriver("Postgres")
# Setup connect to db
conn <- dbConnect(drv,
dbname = etc,)
# Define table to use in db
table <- tbl(conn, in_schema("xyz", "abc"))
#Select columns and filter
base_data <- table %>%
#Filter for pertinent data
filter(date > as.Date("2018-01-01") & date <= as.Date("2020-01-01"))
modified_data <- base_data %>%
mutate(lookback_date = date - 365)
还有其他方法可以创建这个新的日期列吗?
谢谢!
【问题讨论】:
-
您是否正在寻找一种从日期中减去一年的方法?或者您是否正在寻找一种方法来从
dbplyr将转换为 SQL 并在服务器端执行的日期中减去一年?后者是我假设您不想使用lubridate的原因。 -
@Adam 我想从日期中删除一年。有没有办法用 dbplyr 做到这一点?运行该 mutate 函数后打印“modified_data”会引发错误。当我在本地数据帧上使用该代码时,我没有这个问题。希望我在这里使用了正确的术语。
标签: r date dbplyr rpostgresql