【发布时间】:2020-01-14 20:55:40
【问题描述】:
我从各种 .csv 文件(使用 read_csv)中读取了大量数据。在文件中读取的 Datetime 列作为类字符读取。出于绘图目的,我需要将此字符列转换为实际日期时间(并检查重复项)。这很有趣,因为日期并非始终采用 12 小时或 24 小时格式。时区也不一致,但我认为我的工作正常。
我对 R 比较陌生,并且会接受任何积极的建议。
这就是我目前正在尝试的方式:
# Add time zone information:
# Some data uses 12-hour clock:
if (sum(grep("AM", Data$Date))||sum(grep("PM", Data$Date))>0){
if (Time_Zone == "Eastern Daylight Time"){
Data$Date_Formatted <- as.POSIXct(Data$Date, "%m/%d/%Y %H:%M:%S", tz = "America/New_York")
Data$Date_Formatted2 <- as.POSIXlt(Data$Date, "%m/%d/%Y %H:%M:%S", tz = "America/New_York")
}
else if (Time_Zone == "Central Daylight Time" || Time_Zone == "Central Standard Time") {
Data$Date_Formatted <- as.POSIXct(Data$Date, "%m/%d/%Y %H:%M:%S", tz = "America/Chicago")
Data$Date_Formatted2 <- as.POSIXlt(Data$Date, "%m/%d/%Y %H:%M:%S", tz = "America/Chicago")
}
}
# Other data uses a 24-hour clock:
else{
if (Time_Zone == "Eastern Daylight Time"){
Data$Date_Formatted <- as.POSIXct(Data$Date, "%m/%d/%Y %k", tz = "America/New_York")
Data$Date_Formatted2 <- as.POSIXlt(Data$Date, "%m/%d/%Y %k", tz = "America/New_York")
}
else if (Time_Zone == "Central Daylight Time" || Time_Zone == "Central Standard Time") {
Data$Date_Formatted <- as.POSIXct(Data$Date, "%m/%d/%Y %k", tz = "America/Chicago")
Data$Date_Formatted2 <- as.POSIXlt(Data$Date, "%m/%d/%Y %k", tz = "America/Chicago")
}
}
我不确定 POSIXct 和 POSIXlt 之间有什么区别,并找到了另一个同时使用两者的线程......所以我做了......不过我认为没有必要。
12 小时解决方案似乎工作得很好,但 24 小时格式肯定仍然不正确。
【问题讨论】:
-
你能提供一些示例数据吗?