Cuando discutimos datos, a menudo necesitamos derivar diferentes formatos de fecha de nuestros objetos de fecha y hora en nuestro DataFrame.
En este tutorial, aprenderemos cómo podemos agregar nuevas columnas que contengan el número del día de la semana y nombrar nuestra columna de fecha en nuestro DataFrame.
Crear marco de datos de ejemplo
Primero definiremos un DataFrame muy simple que puedes usar para seguir este ejemplo:
library(lubridate) stamps <- seq (ymd_hms ('2024-04-02 13:00:00'), ymd_hms ('2024-04-06 13:00:00'), by ='days') # define vectors language <- c ('Python', 'Java', 'Javascript', 'Javascript', 'Java') salary <- c (139.0, 97.0, 135.0, 99.0, 157.0) # create DataFrame hiring <- data.frame (dates = stamps, language = language, salary = salary) print(hiring)
Nota: usamos el paquete lubridate y su función ymd para crear los objetos de fecha y hora para nuestro DataFrame.
Aquí están nuestras filas de DataFrame:
fechasidiomasalario1 | 2024-04-02 13:00:00 | Pitón | 139 |
2 | 2024-04-03 13:00:00 | Java | 97 |
3 | 2024-04-04 13:00:00 | JavaScript | 135 |
4 | 2024-04-05 13:00:00 | JavaScript | 99 |
5 | 2024-04-06 13:00:00 | Java | 157 |
Convertir la columna de fecha en el nombre del día de la semana
Podemos usar el formateador de fecha strftime de la siguiente manera para crear una columna de nombre de día de la semana:
hiring€weekday_name <- strftime(hiring€date, '%A') print (hiring€weekday_name)
Aquí está nuestra salida:
[1] "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"
Podemos lograr el mismo resultado usando la función R weekdays:
hiring€weekday_name <- weekdays(hiring€date)
Obtener el número de día de la semana de una fecha
Otro caso posible es convertir una fecha en un número de día de la semana. Aquí hay un fragmento corto usando la función wday del paquete lubridate:
library(lubridate) hiring€weekday_num <- wday(hiring€date) print (hiring€weekday_num)
Aquí está nuestra salida, que consiste en los números de los días.
[1] 3 4 5 6 7
Concatenación de día y número de la semana
Aquí hay un fragmento que, al usar la función de pegar, une el número y la fecha del día de la semana:
hiring€week_num_day_name <- paste("W", week(hiring€date), weekdays(hiring€date), sep = "-") print (hiring€week_num_day_name)
Esto devuelve:
"W-14-Tuesday" "W-14-Wednesday" "W-14-Thursday" "W-14-Friday" "W-14-Saturday"