Niall Asked: 2025-03-10 06:01:35 +0800 CST2025-03-10 06:01:35 +0800 CST 2025-03-10 06:01:35 +0800 CST R中的时间转换 772 在 R 中,我有一个数据框,其中有一列名为“时间”,其中包含“1 小时前”、“2 小时前”和“38 分钟前”等条目。如何根据系统时间将它们转换为标准日期/时间格式,例如“2025-03-09 01:30:00”? 1 个回答 Voted Best Answer 2025-03-10T06:16:38+08:002025-03-10T06:16:38+08:00 这是一个基本 R 解决方案。 注意:这将处理字符串包含“小时”或“分钟”的情况,如您的示例中所示。此代码从字符串中获取数值,并通过匹配字符串模式来假设单位 (h/m)。根据单位和数字,时间将从当前 sys.time() 中减去。您可能希望根据更多未命名的单位(秒/天/周)在 if 语句中处理更多情况 df <- data.frame(time = c("1 hour ago", "2 hours ago", "38 minutes ago")) df$num <- as.numeric(gsub("([0-9]+).*", "\\1", df$time)) df$unit <- gsub(".*([0-9]+) ([a-z]+).*", "\\2", df$time) # get Word after numeric df$unit <- gsub("s$", "", df$unit) # remove s if it exists df$timestamp <- Sys.time() - ifelse(df$unit == "hour", df$num * 3600, df$num * 60) df time num unit timestamp 1 1 hour ago 1 hour 2025-03-09 22:12:56 2 2 hours ago 2 hour 2025-03-09 21:12:56 3 38 minutes ago 38 minute 2025-03-09 22:34:56
这是一个基本 R 解决方案。
注意:这将处理字符串包含“小时”或“分钟”的情况,如您的示例中所示。此代码从字符串中获取数值,并通过匹配字符串模式来假设单位 (h/m)。根据单位和数字,时间将从当前 sys.time() 中减去。您可能希望根据更多未命名的单位(秒/天/周)在 if 语句中处理更多情况