我想计算“客户生命周期”值,为此需要变量“客户在公司的年数”。但是我几天之内就拥有了。所以我想从给定的数字中提取数字年份。像Excel中的Datedif()函数一样
我尝试将数字除以365。但这是不准确的。
data$Customer_Duration
[1] 368 1649 594 218 952 723 313
data$Cust_duration_years=round((data$Customer_Duration/365),2)
data$Cust_duration_years
> data$Cust_duration_years
[1] 1.01 4.52 1.63 0.60 2.61 1.98
当我在excel中执行datedif()
函数时。我得到了一些细微的差别。
像2观察到的那样,R的值为1649/365 = 4.52,而Excel中的值为4.6
答案 0 :(得分:0)
这是将天数转换为年份月和普通年的天数的解决方案(可以轻松地将其扩展到leap年):
days_toymd = function(days){
year_days = 365
month_days = c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
## number of years
yr = round(days / year_days, 0)
yr_lo = days %% year_days
month = 0
## number of months
for(i in month_days){
if(yr_lo >= i){
month = month + 1
yr_lo = yr_lo - i
}
else if(yr_lo < i){
yr_lo = yr_lo
}
}
print("days converted to years, months and days")
return(paste(yr, month, yr_lo))
}