我的任期为任期,我需要使用顺序在范围上进行划分。
DF
Tenure
3y 11m 30d 0H 0M 0S
7y 3m 30d 0H 0M 0S
6y 5m 30d 0H 0M 0S
8y 11m 30d 0H 0M 0S
7y 11m 30d 0H 0M 0S
我需要使用seq(3,9,by=1.5)
Tenure
(3,4.5]
(6,7.5]
(6,7.5]
(7.5,9]
(7.5,9]
我在R中使用了下面的代码。它正在工作,但是有些显示错误信息的方式,有些还给出了NA,这对我来说很奇怪。
DF$Tenure<-cut(DF$Tenure@year,breaks=seq(3,9,by=1.5),right=TRUE)
答案 0 :(得分:0)
您首先需要考虑将Tenure
中的period/duration
转换为years
。 Tenure
成立后,您可以申请cut
来创建因子。
使用lubridate
的选项可以是:
library(lubridate)
df$Tenure <- cut(as.numeric(period(df$Tenure),unit="years"), seq(3,9,by=1.5))
df
# Tenure
# 1 (3,4.5]
# 2 (6,7.5]
# 3 (6,7.5]
# 4 (7.5,9]
# 5 (7.5,9]
注意:
as.numeric(period(df$Tenure),unit="years")
将数据从3y 11m 30d 0H 0M 0S
格式转换为绝对数字年份(例如3.998802
年)格式。
数据:
df <- read.table(text =
"Tenure
'3y 11m 30d 0H 0M 0S'
'7y 3m 30d 0H 0M 0S'
'6y 5m 30d 0H 0M 0S'
'8y 11m 30d 0H 0M 0S'
'7y 11m 30d 0H 0M 0S'",
header = TRUE, stringsAsFactors = FALSE)