导入单独的日期和时间 (hh:mm) excel 列,用于计算经过的时间
Import separate date and time (hh:mm) excel columns, to use for time elapsed calculation
这里是新手,先post(请温柔)。我已经尝试解决这个问题好几个小时了,所以终于决定是时候征求意见了。
我有一个很大的电子表格,我正在用 readxl 导入它。它包含一个带日期的列(格式 dd/mm/yyyy)和几个格式为 hh:mm 的时间列,如下所示:excel
基本上我希望能够导入时间和日期列并将它们组合起来,这样我就可以进行一些其他计算,例如经过的时间。
如果我导入让 R 猜测 col 类型,它会将时间转换为 POSIXct,但这些时间会附加一个 1899 年的日期:R_POSIXct
如果我强制 readxl 将时间列分配给数字,我会得到一个小数(例如 07:35 的 0.315972222),然后尝试使用与
类似的语法进行转换
format(as.POSIXct(Sys.Date() + 0.315972222), "%Y-%m-%d %H:%M:%S", tz="UTC")
即
df$datetime <- format(as.POSIXct(df$date + df$time), "%Y-%m-%d %H:%M", tz="UTC")
结果是正确的日期,但时间是 00:00,而不是传递的时间。
我尝试在这里搜索并发现 posts 不是完全相同的问题(例如 Combining date and time columns into dd/mm/yyyy hh:mm),并且广泛阅读,包括关于 lubridate,但因为我只是进入 R 6 个月后,我发现一些解释有点含糊。
建议或签名post表示感谢(如果有我还没有找到的解决方案)
如果您减去 1899-01-01 和 1970-01-01 之间的天数,然后将该(移位的)Excel 数值乘以 3600,您应该接近自此以来的秒数1970 年开始。然后您可以使用 as.POSIXct( x, origin="1970-01-01") 转换为 POSIXct。这似乎是 "the hard way",但是
将日期时间转换为 YYYY-MM-DD H:M:S 格式然后导出为 csv 以作为文本导入 R 会更容易,也可能更准确。 read.csv
有一个 "POSIXct" colClasses 参数,尽管它不处理单独的日期和时间列。为此,建议您导入为字符值,然后 paste
日期和时间。然后观察您为 as.POSIXct 格式化字符串。 dd/mm/yyyy "format" 将由“%d/%m/%Y”指定。
这里是新手,先post(请温柔)。我已经尝试解决这个问题好几个小时了,所以终于决定是时候征求意见了。
我有一个很大的电子表格,我正在用 readxl 导入它。它包含一个带日期的列(格式 dd/mm/yyyy)和几个格式为 hh:mm 的时间列,如下所示:excel
基本上我希望能够导入时间和日期列并将它们组合起来,这样我就可以进行一些其他计算,例如经过的时间。
如果我导入让 R 猜测 col 类型,它会将时间转换为 POSIXct,但这些时间会附加一个 1899 年的日期:R_POSIXct
如果我强制 readxl 将时间列分配给数字,我会得到一个小数(例如 07:35 的 0.315972222),然后尝试使用与
类似的语法进行转换format(as.POSIXct(Sys.Date() + 0.315972222), "%Y-%m-%d %H:%M:%S", tz="UTC")
即
df$datetime <- format(as.POSIXct(df$date + df$time), "%Y-%m-%d %H:%M", tz="UTC")
结果是正确的日期,但时间是 00:00,而不是传递的时间。
我尝试在这里搜索并发现 posts 不是完全相同的问题(例如 Combining date and time columns into dd/mm/yyyy hh:mm),并且广泛阅读,包括关于 lubridate,但因为我只是进入 R 6 个月后,我发现一些解释有点含糊。
建议或签名post表示感谢(如果有我还没有找到的解决方案)
如果您减去 1899-01-01 和 1970-01-01 之间的天数,然后将该(移位的)Excel 数值乘以 3600,您应该接近自此以来的秒数1970 年开始。然后您可以使用 as.POSIXct( x, origin="1970-01-01") 转换为 POSIXct。这似乎是 "the hard way",但是
将日期时间转换为 YYYY-MM-DD H:M:S 格式然后导出为 csv 以作为文本导入 R 会更容易,也可能更准确。 read.csv
有一个 "POSIXct" colClasses 参数,尽管它不处理单独的日期和时间列。为此,建议您导入为字符值,然后 paste
日期和时间。然后观察您为 as.POSIXct 格式化字符串。 dd/mm/yyyy "format" 将由“%d/%m/%Y”指定。