问题描述
我想将一个会计月末日期更改为R中的数据集。在我的公司中,会计月末日期应为21日。例如
12/22/2019至1/21/2020将是2020年1月 2020年1月2日至2020年2月21日将是2020年2月 2020年2月22日至2020年3月21日将是2020年3月 等等
数据集
期望的输出
我将如何在R中完成此操作。数据中的“日期”列为%m /%d /%Y(1/22/2020)
解决方法
您可以提取日期,如果日期大于22,则将其添加10天,并以月-年格式获取日期:
ifelse
这也可以在没有transform(dat,Fiscal_Month = format(Date + c(0,10)
[(as.integer(format(Date,'%d')) >= 22) + 1],'%b %Y'))
的情况下完成:
dat <- data.frame(Date = seq(as.Date('2020-01-20'),by = '1 day',length.out = 5))
数据
使用了此示例数据:
Traceback (most recent call last):
...
File "/.../site-packages/rest_framework/views.py",line 502,in dispatch
response = handler(request,*args,**kwargs)
File "/.../views.py",line 51,in post
test_1 = face_recognition.load_image_file(path_)
File "/.../site-packages/face_recognition/api.py",line 86,in load_image_file
im = PIL.Image.open(file)
File "/.../site-packages/PIL/Image.py",line 2878,in open
fp = builtins.open(filename,"rb")
FileNotFoundError: [Errno 2] No such file or directory: 'http://127.0.0.1:8000/media/profile_pics/me.jpg'
,
1)yearmon 我们执行以下步骤:
- 创建测试数据
d
,该数据显示周期月初(即22日或更晚)的日期和周期月末(即21日或更早)的日期 - 将输入
d
转换为Date
的{{1}}类 - 减去21天,从而将其转移到开始会计期间的月份
- 将其转换为
dd
类的ym
(代表一年零零一个月,没有一天,而直接将其内部表示为年份,1月为1,2月为1/12,.. 。,12月11/12),然后加1/12到会计期末的月。 - 格式化它,如图所示。 (如果
yearmon
使用的默认格式(例如2020年1月)可以,那么我们可以省略此步骤,即代码的最后一行。
整个内容很容易用一行代码编写,但是为了清楚起见,我们将其分解了。
yearmon
2)Base R 只能使用base R来完成此操作,如下所示。我们从上方使用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"
。 dd
计算cut
所在的月份的第一天(但不是作为dd-21
类对象),然后Date
将其转换为一个。加31将其移至期末月末并对其进行格式化,我们将得出最终答案。
as.Date