我有兩個單獨的列,分別是日期和時間。我只想將它們組合成一列。例如;
# Example data
Time<- as.character(c("11:15", "12:23", "15:42"))
Date<- as.character(c("2022-02-14", "2022-03-01", "2022-03,01"))
df<-data.frame(Time, Date)
class(df$Date)
class(df$Time)
此處發布的問題類似,但我沒有需要處理的“24”的雙倍。我嘗試了以下無濟于事;
df$DateTime<-as.POSIXlt(paste0(df$Date, " ", df$Time, tz = "HST"))
任何幫助是極大的贊賞。使用mutate()也會很好。
uj5u.com熱心網友回復:
試試這個:
#I think you might have put a comma instead of a dash in you example data. Corrected by gsub:
df$Date <- gsub(",", "-",df$Date)
#Create a new combined date and time column:
df$DateTime <- paste(df$Date,df$Time)
#Convert the new column into a POSIXlt class object:
df$DateTime <- as.POSIXlt(df$DateTime, c("%Y-%m-%d %H:%M"), tz = "HST")
使用包中的管道操作的另一種方法dplyr:
library(dplyr)
df %>%
mutate(Date = gsub(",","-",Date)) %>%
mutate(DateTime = paste(Date,Time)) %>%
mutate(DateTime = as.POSIXlt(DateTime, c("%Y-%m-%d %H:%M"), tz = "HST")) -> df
uj5u.com熱心網友回復:
我們可以使用tidyverseand 由于日期和時間的格式/順序正確,我們不一定需要指定DateTime.
library(tidyverse)
df %>%
mutate(Date = str_replace_all(Date, ",", "-"),
DateTime = as.POSIXlt(paste(Date, Time, sep = " "), tz = "HST"))
或者我們也可以使用lubridate:
library(lubridate)
df %>%
mutate(Date = str_replace_all(Date, ",", "-"),
DateTime = ymd_hm(paste(Date, Time, sep = " "), tz = "HST"))
輸出
Time Date DateTime
1 11:15 2022-02-14 2022-02-14 11:15:00
2 12:23 2022-03-01 2022-03-01 12:23:00
3 15:42 2022-03-01 2022-03-01 15:42:00
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460965.html
標籤:r
