tiempo - contar dias entre dos fechas
calcular el número de días entre 2 columnas de fechas en el marco de datos (3)
Necesitas usar los formatos as.Fecha correctamente.
P.ej.
x = ''2012/07/25''
xd = as.Date(x,''%Y/%m/%d'')
xd # Prints "2012-07-25"
Los formatos de fecha R son similares a los de * nix.
Hacer un typeof (xd) lo muestra como un doble, es decir. Días desde 1970.
Tengo un marco de datos que tiene dos columnas de fechas en el formato aaaa / mm / dd. Estoy tratando de calcular el número de días entre estas dos fechas para cada observación dentro del marco de datos (y crear una nueva variable con este número de días).
Hasta ahora he intentado usar la respuesta dada aquí:
Calcula el número de días de la semana entre 2 fechas en R
pero edite el código para que calcule la cantidad de días totales en lugar de solo la cantidad de días de la semana. Esto acaba de llegar al error diciendo:
Error in del/by : non-numeric argument to binary operator
In addition: Warning message:
In Ops.factor(to, from) : - not meaningful for factors
También he intentado usar este código:
finish <- as.Date(survey$date, format="%yyyy/%mm/%dd")
start <- as.Date(survey$tx_start, format="%yyyy/%mm/%dd")
date_diff<-as.data.frame(finish-start)
con el plan de usar "cbind" o algo equivalente para combinar el marco de datos "días" con mi marco de datos "encuesta" que contiene datos.
Aunque esto no me da ningún error, las observaciones dentro de los objetos "terminar" y "comenzar" son todos "NA_real_", y el marco de datos date_diff por lo tanto tiene todas las observaciones como NA.
¡Si alguien pudiera apuntarme en la dirección correcta sería genial! Todas las otras preguntas que he encontrado no parecen tener que ver con fechas dentro de las variables, sino como fechas individuales, y aplicar esas técnicas a las variables no me ha funcionado.
Gracias por adelantado
Puede encontrar la diferencia entre fechas en columnas en un marco de datos utilizando la función difftime
siguiente manera:
df$diff_in_days<- difftime(df$datevar1 ,df$datevar2 , units = c("days"))
Sin ver sus datos (puede usar la salida de dput(head(survey))
para mostrarnos) esta es una foto en la oscuridad:
survey <- data.frame(date=c("2012/07/26","2012/07/25"),tx_start=c("2012/01/01","2012/01/01"))
survey$date_diff <- as.Date(as.character(survey$date), format="%Y/%m/%d")-
as.Date(as.character(survey$tx_start), format="%Y/%m/%d")
survey
date tx_start date_diff
1 2012/07/26 2012/01/01 207 days
2 2012/07/25 2012/01/01 206 days