首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在添加会计月末

正在添加会计月末
EN

Stack Overflow用户
提问于 2020-08-29 11:58:46
回答 2查看 63关注 0票数 0

我想将一个财政月末日期更改为R中的一个数据集。在我的公司中,财政月末应该是该日期的21号。例如

2019年12月22日至2020年1月21日2020年1月22日至2020年2月21日将于2020年2月22日至2020年3月21日将2020年3月2日至2020年3月21日,以此类推

数据集

Desired_output

如何在R中完成此操作。数据中的日期列为%m/%d/%Y(1/22/2020)

EN

回答 2

Stack Overflow用户

发布于 2020-08-29 13:46:39

您可以提取日期,如果日期大于22,则在其上添加10天,并以月-年的格式获得日期:

代码语言:javascript
复制
transform(dat, Fiscal_Month = format(Date + 
               ifelse(as.integer(format(Date, '%d')) >= 22, 10, 0), '%b %Y'))

#        Date Fiscal_Month
#1 2020-01-20     Jan 2020
#2 2020-01-21     Jan 2020
#3 2020-01-22     Feb 2020
#4 2020-01-23     Feb 2020
#5 2020-01-24     Feb 2020

这也可以在没有ifelse的情况下完成,如下所示:

代码语言:javascript
复制
transform(dat, Fiscal_Month = format(Date + c(0, 10)
                        [(as.integer(format(Date, '%d')) >= 22) + 1], '%b %Y'))

data

使用以下示例数据:

代码语言:javascript
复制
dat <- data.frame(Date = seq(as.Date('2020-01-20'), by = '1 day',length.out = 5))
票数 0
EN

Stack Overflow用户

发布于 2020-08-29 16:41:04

1)年月我们执行以下步骤:

创建测试数据类,该测试数据类既显示周期月份开始中的日期(即,22日或更晚),又显示周期月末中的日期(即,21或earlier)

  • convert

  • d d to Date class,给予dd

  • subtract 21天,从而将其转移到开始财政period

  • convert的月份,该月份为d of ym of yearmon类(其表示没有日期的一年和月份,并且直接和内部地将其表示为表示1月的年份加0,表示2月的1/12,...,12月为11/12 ),然后添加1/12,以获得财政period.

  • format它的月末,如下所示。(如果yearmon使用的默认格式(例如2020年1月)没问题,我们可以省略这一步,即最后一行代码。

整个代码可以很容易地写在一行代码中,但为了清楚起见,我们将其分解。

代码语言:javascript
复制
library(zoo)

d <- c("1/22/2020", "1/21/2020") # test data

dd <- as.Date(d, "%m/%d/%Y")
ym <- as.yearmon(dd - 21) + 1/12
format(ym, "%b-%y")
## [1] "Feb-20" "Jan-20"

2) Base R这可以只在base R中使用,如下所示。我们使用上面的ddcut计算dd-21所在月份的第一个月(但不是作为Date类对象),然后as.Date将其转换为1。加上31,将其移至月末,并对其进行格式化,即可得到最终答案。

代码语言:javascript
复制
format(as.Date(cut(dd - 21, "month")) + 31, "%b-%y")
## [1] "Feb-20" "Jan-20"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63643275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档