2016-08-16 6 views
0

Ich versuche eine Spalte in einem Dataset zu erstellen, die mir die (ungefähre) Anzahl von Monaten angibt, die ein Kunde mit der Firma verbracht hat.Funktion anwenden, um Monate ab dem heutigen Datum zu erhalten

Dies ist mein aktueller Versuch:

dat <- data.frame(ID = c(1:4), start.date = as.Date(c('2015-04-09', '2014-03- 24', '2016-07-01', '2011-02-02'))) 
dat$months.customer <- apply(dat[2], 1, function(x) (as.numeric(Sys.Date())- as.numeric(x))/30) 

Es Rückkehr aller NAs

+0

'(as.numeric (Sys.Date()) - als .numeric (dat $ start.date))/30' – r2evans

+0

Die anderen Antworten sind gut, Ihr Problem war, dass Sie 'apply' und' dat [2] 'benutzten, wenn Sie' sapply' und 'dat [, 2]' wollten – TomNash

Antwort

2

Sie difftime verwenden können:

dat$months.customer <- 
as.numeric(floor(difftime(Sys.Date(),dat$start.date,units="days")/30)) 

# ID start.date months.customer 
# 1 1 2015-04-09    16 
# 2 2 2014-03-24    29 
# 3 3 2016-07-01    1 
# 4 4 2011-02-02    67 
Verwandte Themen