我有一个包含以下列的数据:
Date CID FID rank
31/01/17 abc0001 rx180x01 0
31/01/17 abc0001 rx180x02 0
31/01/17 abc0001 rx180x03 2
28/02/17 abc0001 rx180x32 1
28/02/17 abc0001 rx180x31 0
Run Code Online (Sandbox Code Playgroud)
每个 CID 都有一些映射到它的唯一 FID,并且这些 FID 有一些排名。我需要创建 2 个新列 finalrank 和 finalFID。
最终排名是每个日期的每个 CID 的最大排名。即对于 CID abc0001,在日期 31/01/17 中,finalrank 将为 2。此逻辑将应用于所有唯一的 CID 日期组合。
FinalFID 是日期中 CID 具有特定 finalrank 值的 FID。例如,在日期 31/01/17,对于 CID abc0001,具有最大秩的 FID 为 rx180x03
所以我的结果应该是这样的:
Date CID FID rank finalrank finalFID
31/01/17 abc0001 rx180x01 0 2 rx180x03
31/01/17 abc0001 rx180x02 0 2 rx180x03
31/01/17 …Run Code Online (Sandbox Code Playgroud) 如果我给出开始日期和结束日期以及频率,我应该能够生成从开始到结束的日期序列,这样
1)日期是当月的最后一天。2)我可以将序列的频率设置为 12 的任何因子(wrt 12 个月)。假设频率为 3,则表示间隔或间隔为 4 个月。
对于(1)以下函数给了我一个间隔为 3 个月(即每季度)的输出,但它没有给出当月最后一天的日期。
DateSeq<-function(st,en, freq){
seq(st, en, by = paste(as.character(12/freq), "months"))
}
DateSeq(as.Date("2015-01-01"),as.Date("2018-03-03"),4)
Run Code Online (Sandbox Code Playgroud)
如何将其转换为给我最后一天的序列。?给个简单的代码。