Hola, Jaume:
El problema que tienes en tu enfoque y por lo que R no te deja añadir
esa fecha al vector es que no es un valor lo que intentas sustituir. Tu
'fecha' lo que contiene es un objeto 'Period' de lubridate y 'fecha.b'
verás que es de tipo POSIXlt, que viene a ser internamente como una
lista (mira ?DateTimeClasses). Puedes comprobarlo con:
str(fecha)
class(fecha.b)
Si quieres mantener tu enfoque (que muchas veces es lo que uno mejor
entiende) podrÃas guardar tu fecha como una cadena (tu vector cambiará a
tipo character) o guardarlo tal cual en el vector (que se te convertirá
a numérico, como se guardan las fechas, desde 1970-01-01).
string <- paste0(original[1:3], collapse = "-")
fecha <- parse_date_time(string, orders = "%y-%j-%H%M")
# opción 1
v <- c(0, 0, 0)
v[1] <- as.character(fecha)
as_datetime(v)
# opción 2
v <- c(0, 0, 0)
v[1] <- fecha
as_datetime(v)
Un saludo
Ãlvaro
El 24/2/20 a las 21:54, Jaume Tormo escribió:
Muchas gracias,
Probaré eso también y ya os cuento.
Jaume.
El lun., 17 feb. 2020 a las 22:10, Javier Marcuzzi (<
javier.ruben.marcuzzi en gmail.com>) escribió:
Estimado Jaume Tormo
En lo personal yo utilizo un enfoque como el que comenta Carlos Ortega,
me ocurre que posiblemente funcione si a su código le coloca algo de
formato, me refiero a esta forma:
as.Date("10/21/2012", format = "%m/%d/%Y")
Javier Rubén Marcuzzi
El lun., 17 feb. 2020 a las 17:55, Jaume Tormo (<jautorbla en gmail.com>)
escribió:
Carlos, muchas gracias, voy a probarlo.
Pero me sigue intrigando por que no puedo ponerlo como elemento de un
vector... Misterios del R. SI lo averiguo os lo digo.
Jaume.
El sáb., 15 feb. 2020 a las 19:08, Carlos Ortega (<
cof en qualityexcellence.es>)
escribió:
Hola,
Una alternativa que te puede ayudar es enfocar el problema de esta
forma.
Puedes ir guardando tus vectores "original" en un data.frame y luego
convertirlo a fechas.
Una vez tienes estas fechas, puedes hacer cálculos o extraer otras
variables.
original<-c(2019,308,1700, 25)
df <- data.frame(
+ Year = original[1],
+ DayNum = original[2],
+ Hour = original[3]
+ )
my_fecha <- strptime( paste(df$Year, df$DayNum, df$Hour, sep = ""),
[1] "2019-11-04 17:00:00 CET"
my_fecha <- strptime( paste(original[1], original[2], original[3],
[1] "2019-11-04 17:00:00 CET"
Gracias,
Carlos Ortega
www.qualityexcellence.es
El sáb., 15 feb. 2020 a las 12:45, Jaume Tormo (<jautorbla en gmail.com
Hola,
Estoy encontrando un problema al intentar poner un objeto Dates en un
vector o dataframe.
Mi ejemplo
# preliminares
install.packages( lubridate ); library( lubridate )
v <- c(0, 0, 0)
original<-c(2019,308,1700, 25) # c(año, dÃa del año, hora,
esto sale asà de un sensor de temperatura
# convertimos los datos originales en algo que entienda R
a <- years(original[1] )
d <- days(original[2]-1 ) # el -1 es un ajuste por como son los
originales
h <- hours( substr(original[3], 1, 2) )
fecha <- a+d+h # Conseguimos una fecha completa
fecha.b <- as.Date(fecha, origin="0000-01-01" ) # convertimos la
en
dÃas del mes en lugar de dÃas del año
# mi problema
# Si asigno fecha a un elemento de un vector me sale 0
v[2] <- fecha
v[2]
# Si asigno fecha.b a un elemento de un vector me da un error
v[1] <- fecha.b
Me da cosas parecidas si intento asignar un lugar en un dataframe,
Entiendo que as.Date convierte la fecha en algo que tiene más de un
elemento ¿Puede ser eso? Si es asà ¿Cómo veo lo que hay dentro del