R 导入单独的日期和时间(hh:mm)excel列,用于计算所用时间

R 导入单独的日期和时间(hh:mm)excel列,用于计算所用时间,r,excel,date,time,readxl,R,Excel,Date,Time,Readxl,新手在这里,第一个帖子(请温柔)。我已经试着解决这个问题好几个小时了,所以最后决定咨询一下 我有一个用readxl导入的大型电子表格。它包含一列日期(格式为dd/mm/yyyy)和几个格式为hh:mm的时间列,如图所示: 基本上,我希望能够导入时间和日期列,并将它们组合起来,这样我就可以进行一些其他计算,比如时间流逝 如果我输入让R猜测col类型,它会将时间转换为POSIXct,但这些时间会附带一个1899年的日期: 如果我强制readxl将时间列指定为numeric,我会得到一个十进制数(例

新手在这里,第一个帖子(请温柔)。我已经试着解决这个问题好几个小时了,所以最后决定咨询一下

我有一个用readxl导入的大型电子表格。它包含一列日期(格式为dd/mm/yyyy)和几个格式为hh:mm的时间列,如图所示:

基本上,我希望能够导入时间和日期列,并将它们组合起来,这样我就可以进行一些其他计算,比如时间流逝

  • 如果我输入让R猜测col类型,它会将时间转换为POSIXct,但这些时间会附带一个1899年的日期:

  • 如果我强制readxl将时间列指定为numeric,我会得到一个十进制数(例如07:35的0.315972222),然后尝试使用类似的语法将其转换为

    格式(如.POSIXct(Sys.Date()+0.315972222),%Y-%m-%d%H:%m:%S”,tz=“UTC”)

i、 e


df$datetime如果减去1899-01-01和1970-01-01之间的天数,然后将(移位的)Excel数值乘以3600,则应接近1970年初以来的秒数。然后可以使用as.POSIXct(x,origin=“1970-01-01”)转换为POSIXct。然而,这似乎是“艰难的道路”


将日期时间转换为YYYY-MM-DD H:M:S格式,然后导出为csv以作为文本导入到R中,这将更容易、更准确。
read.csv
有一个“POSIXct”colClasses参数,尽管它不处理日期和时间的单独列。为此,建议您导入字符值,然后粘贴日期和时间。然后观察您如何格式化as.POSIXct的字符串。dd/mm/yyyyy“格式”将由“%d/%m/%Y”指定。

Excel在内部将其日期时间值保存为自参考日期(名义上为1900-01-01)起的天数的小数点,但由于他们(Lotus 1-2-3作者和Microsoft Multiplan作者)都犯了相同的闰年错误,因此保留在Excel中。R遵循POSIX标准,自1070-01-01以来将其日期时间值存储为秒的小数。使用readxl导入时,还有
read.csv()
plyr
data.table
等。实现了自己的读卡器,有些还允许在引擎盖下进行日期转换。另请参见lubridate、fasttime等。另外,不要发布数据的PNG图像片段,发布可复制的代码,给出几行。为了帮助其他人:-我发现:保存在MacOS中的csv文件以“ddmmyy”格式导入,但如果csv文件保存在Windows中,则以“ddmmyyy”格式导入。我的方法是不明智的,添加了导出/接口问题(SQL->XLS(Win)->csv->MacR->WindowsR…)。这导致1929年显示为2029年,但我没有跟踪过程中的错误点,因为发现了另一种方法(使用RODBC的直接SQL连接将日期导入为POSIXct。很容易搜索,但在此处突出显示-Windows DateSystem的第一天为1900年1月1日-Mac DateSystem的第一天为1904年1月2日-R POSIXct的第一天为1970年1月1日