我想从日期中仅提取季度,例如,从"2003-02-08"日期获得整数1.我一直在尝试这条线
library(mondate)
as.yearqtr(dat$DATE)
Run Code Online (Sandbox Code Playgroud)
"2003 Q1"
as.character(as.yearqtr(dat$DATE))[1]
Run Code Online (Sandbox Code Playgroud)
"2003 Q1"
没有给出我想要的结果.当然我可以写如下条件
library(data.table)
data$DATE = as.Date(data$DATE, format='%d%b%Y')
data$month=month(data$DATE)
setDT(data)[month==1, quarter:=1]
...
Run Code Online (Sandbox Code Playgroud)
这会起作用,但根本不优雅.这样做有更美妙的方式吗?
谢谢lmo和user2100721!我真的希望我能接受所有的答案!
lmo*_*lmo 13
有一个基本的R函数,quarters或多或少完成你想要的,虽然它预先设置"Q".所以
quarters(as.Date("2001-05-01"))
[1] "Q2"
Run Code Online (Sandbox Code Playgroud)
如果摆脱"Q"很重要,你可以使用 substr
substr(quarters(as.Date("2001-05-01")), 2, 2)
[1] "2"
Run Code Online (Sandbox Code Playgroud)
其他与日期相关的基本R函数,例如weekdays和months可以在帮助页面中找到?quarters.
我会做:
# example data
DT = data.table(id = 1:10, d = as.IDate("2003-02-08") + seq(100, by=50, length.out=10))
DT[, qtr := quarter(d)]
id d qtr
1: 1 2003-05-19 2
2: 2 2003-07-08 3
3: 3 2003-08-27 3
4: 4 2003-10-16 4
5: 5 2003-12-05 4
6: 6 2004-01-24 1
7: 7 2004-03-14 1
8: 8 2004-05-03 2
9: 9 2004-06-22 2
10: 10 2004-08-11 3
Run Code Online (Sandbox Code Playgroud)
该quarter函数由data.table提供,适用于两者Date和IDate向量.(IDate使用整数存储.)
lubridate包具有相同的功能。我们也可以使用它。我正在使用@Frank的DT
DT[, qtr := lubridate::quarter(d)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8875 次 |
| 最近记录: |