You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言转换时间戳为POSIXct返回double及as.ltraj报错咨询

出错原因
  1. POSIXct类型的底层存储逻辑就是双精度浮点数,因此用typeof()查询返回double是正常现象,判断时间列是否转换成功应该用class(martin_df$timestamp),只要返回结果包含POSIXct即代表时间类型转换正确。你当前代码里存在时区拼写错误,将正确的标准时区GMT错写为GTM,部分R版本遇到无法识别的时区时,会导致时间列转换不符合预期。
  2. 核心报错原因是as.ltraj()的参数传入格式错误:该函数不能直接传入整个数据框作为第一个参数,需要你手动明确指定坐标列、时间日期列、个体ID列三个必填参数,函数无法自动识别数据框中的日期列,因此抛出找不到POSIXct类型日期的错误。
解决方法
  • 先修正时间转换代码的时区拼写:
martin_df$timestamp <- as.POSIXct(martin_df$timestamp,
                                  format="%Y-%m-%d %H:%M:%OS", tz="GMT")

转换完成后执行class(martin_df$timestamp)验证,返回结果包含POSIXct即为转换成功。

  • 按照as.ltraj()的要求传入参数,替换示例代码中的列名为你实际数据框的对应列名即可:
# 假设数据框中x坐标列名为lon,y坐标列名为lat,个体id列名为animal_id
martin.ltraj <- as.ltraj(
  xy = martin_df[, c("lon", "lat")],
  date = martin_df$timestamp,
  id = martin_df$animal_id,
  typeII = TRUE
)

如果你的数据只包含单个个体,id参数也可以直接传入固定字符串,比如id = rep("martin", nrow(martin_df))。

内容的提问来源于stack exchange,提问作者dani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:48:04