我有下表:
身份证付款日期
1 15 2009-02-07
1 30 2009-02-09
1 45 2009-03-04
1 50 2009-03-12
我想获得每两周花费的最大金额。例如,对于 2 月的第一个两周,它必须是 30 日和 3 月 50 日。我如何在 R 中使用 sqldf 库的 sql 查询中做到这一点?
我不使用任何数据库,我将它们放在 .csv 文件中并将它们导入数据框中。我会遇到的问题是,我必须这样做的时间段是几年,所以我不太清楚该怎么做。
我没有接触过 SQLDF,所以我发布这个,以便它可以作为指南和/或帮助。假设 sqldf 后端是 SQLite,您正在寻找的选择可能与以下相同或相似
关于操作,我们使用 strftime 分别用 %W 提取一年中的第几周和用 %Y 提取特定年份。
我提出了一个使用
tidyverse
and的解决方案,lubridate
它考虑返回所有的两周(尽管没有该两周的数据),并且还考虑从 1 到 15 以及从一个月的最后一天 15 开始的两周。我建立了这个例子:
现在我生成一个数据框,其中包含两周的所有最后几天,从数据开始
df
的日期到结束的日期,添加一个名为 的列dinero
,其中包含所有日期的值0
(稍后我将使用):floor_date
withunit = "month"
取月的第一天 (1
) 并ceiling_date() - 1
取最后一天(可以是 28、29、30 或 31)。然后我做一个
full_join
,并考虑它是否不是dinero
,如果不是,我在所有情况下都定义为 0。df$dinero
NA
dates$dinero
在那里,您按年、月和每月的第 1 或第 2 周排序。