Apple Health时间序列转xts时出现POSIXlt字符格式错误如何解决
解决方案
错误原因
你调用as.xts()时没有显式指定时间索引列,函数会尝试将整个数据框(包括字符类型的Type列)转换为时间格式,因此抛出格式不匹配的错误。另外你之前尝试的日期格式转换完全不必要:你的Date列已经是合法的POSIXct类型,且你指定的format = "%Y.%m.%d %H:%M:%S"和实际日期的横杠分隔符不匹配,反而会引入错误。
可行实现代码
因为你已经过滤出了所有心率数据,Type列所有值都是HeartRate,无需保留,直接取Value列作为时间序列值,Date列作为索引即可:
library(xts) # 构造xts对象,x指定数据列,order.by指定时间索引列 heart_rate_xts <- xts(x = new$Value, order.by = new$Date)
如果确实需要保留Type列信息,xts的核心数据为矩阵类型,所有列类型会自动统一,可按如下方式实现:
# 保留多列的xts构造方式 heart_rate_xts <- xts(x = new[, c("Type", "Value")], order.by = new$Date)
验证结果
转换完成后执行head(heart_rate_xts)即可看到带时间索引的序列结果。
内容的提问来源于stack exchange,提问作者C_Hut
相关产品推荐
相关产品推荐

