es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo crear una fecha utilizando día, mes y año en R?

A partir de ‘data_riferimento’, queremos detener el ciclo while cuando ‘data_riferimento’ sea igual a ‘data_prova_v’. ¿Cómo se actualiza ‘data_riferimento’ = ‘data_riferimento’ + 1?

data_riferimento = '08/01/2022'
data_prova_v = '11/01/2022'

while (match(data_riferimento, data_prova_v) == NA) {
  giorno_data_riferimento = as.numeric(substring(data_riferimento, 1, 2)) + 1
  mese_data_riferimento = as.numeric(substring(data_riferimento, 4, 5))
  anno_data_riferimento = as.numeric(substring(data_riferimento, 7))

  data_riferimento = as.Date(as.POSIXct(as.numeric(giorno_data_riferimento, mese_data_riferimento, anno_data_riferimento), origin = "1970/01/01")) --> # no funciona
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para actualizar ‘data_riferimento’ al día siguiente, puedes utilizar el siguiente código:

    data_riferimento <- as.Date(data_riferimento, format='%d/%m/%Y') + 1
    data_riferimento <- format(data_riferimento, '%d/%m/%Y')
    

    Este código primero convierte ‘data_riferimento’ en un objeto de fecha utilizando la función ‘as.Date’ con el formato adecuado. Luego, agrega 1 día a la fecha utilizando el operador de suma, y finalmente convierte la fecha actualizada de nuevo al formato original utilizando la función ‘format’.

    Para detener el bucle ‘while’ cuando ‘data_riferimento’ sea igual a ‘data_prova_v’, puedes agregar una declaración ‘if’ dentro del bucle para verificar esta condición:

    while (match(data_riferimento,data_prova_v)==NA) {
      giorno_data_riferimento=as.numeric(substring(data_riferimento,1,2))+1
      mese_data_riferimento=as.numeric(substring(data_riferimento,4,5))
      anno_data_riferimento=as.numeric(substring(data_riferimento,7))
    
      data_riferimento=as.Date(as.POSIXct(as.numeric(giorno_data_riferimento,mese_data_riferimento,anno_data_riferimento),origin="1970-01-01"))
    
      if (data_riferimento == as.Date(data_prova_v, format='%d/%m/%Y')) {
        break
      }
    
      data_riferimento <- format(data_riferimento, '%d/%m/%Y')
    }
    

    En este código, la declaración ‘if’ verifica si ‘data_riferimento’ es igual a ‘data_prova_v’ utilizando el operador ‘==’. Si lo es, se ejecuta la instrucción ‘break’, que sale del bucle ‘while’.

Comments are closed.