如何将数据集中的时间戳列转换为1-720的连续整数序列?
当然可行!这是完全没问题的操作
你要做的其实是把按天递增的时间戳序列转换成从1开始的连续整数索引,刚好你的数据是严格每天一步、共720天的完美序列,转换起来非常直接。
给你两种简单的实现方式(基于R语言,因为你提到了as.POSIXlt):
方法1:直接基于时间戳数值计算
既然你的时间戳步长固定是86400秒(1天),直接用每个时间戳减去起始值,除以步长,最后加1就能得到1到720的序列:
# 假设你的时间戳列名为timestamp timestamp <- seq(1483225200, 1545346800, by = 86400) day_index <- (timestamp - min(timestamp)) / 86400 + 1
方法2:基于日期时间对象计算
如果你已经把时间戳转成了POSIXlt或POSIXct类型,用difftime函数计算天数差也能实现:
# 先将时间戳转换为日期时间对象 date_obj <- as.POSIXlt(timestamp, origin = "1970-01-01") # 计算每个日期与起始日期的天数差 day_diff <- difftime(date_obj, min(date_obj), units = "days") # 转换为整数并加1,得到1开始的索引 day_index <- as.integer(day_diff) + 1
这两种方法都能得到连续的1到720的整数,而且因为你的时间戳是严格无缺失、无跳步的,结果不会有任何断号或重复的问题,放心用就好~
内容的提问来源于stack exchange,提问作者florisviss
相关产品推荐
相关产品推荐

