我有天数,我想将此给定数字转换为R中的年和月日

时间:2019-04-16 06:56:41

标签: r

我想计算“客户生命周期”值,为此需要变量“客户在公司的年数”。但是我几天之内就拥有了。所以我想从给定的数字中提取数字年份。像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

1 个答案:

答案 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))

}