我需要在我当前的数据框架中创建一个新列,其格式如下所示。
Reg Canceled
20161107 20171102
20120607 20131216
20110105 20130524
新列的标题为Tenure
,它应该保持Canceled
列中的日期与Reg
列中的日期之间的差异。
Reg Canceled Tenure
20161107 20171102 12
20120607 20130607 12
20110105 20110505 4
答案 0 :(得分:3)
借用 Number of months between two dates
101110011000100011 to
001011011000100011
答案 1 :(得分:0)
我建议
Reg <- c(
"20161107",
"20120607",
"20110105"
)
Canceled <- c(
"20171102",
"20131216" ,
"20130524"
)
df <- data.frame(Reg=Reg, Canceled=Canceled)
parsed_reg <- gsub("([0-9]{4})([0-9]{2})([0-9]{2})", "\\1-\\2-\\3", df$Reg)
split_reg <- strsplit(parsed_reg, "-")
dates_reg <- t(data.frame(split_reg))
dates_reg <- data.frame(apply(dates_reg, 2, as.integer))
parsed_can <- gsub("([0-9]{4})([0-9]{2})([0-9]{2})", "\\1-\\2-\\3", df$Canceled)
split_can <- strsplit(parsed_can, "-")
dates_can <- t(data.frame(split_can))
dates_can <- data.frame(apply(dates_can, 2, as.integer))
colnames(dates_reg) <- c("year", "month", "day")
colnames(dates_can) <- c("year", "month", "day")
df$tenure <- (dates_can$year-dates_reg$year)*12 + (dates_can$month-dates_reg$month)