苹果健康时间序列 as.xts as.POSIXlt.character(x, tz, ...) 中的错误:字符串不是标准的明确格式 [关闭]
Posted
技术标签:
【中文标题】苹果健康时间序列 as.xts as.POSIXlt.character(x, tz, ...) 中的错误:字符串不是标准的明确格式 [关闭]【英文标题】:apple health time series as.xts Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format [closed] 【发布时间】:2021-12-11 17:52:04 【问题描述】:我正在尝试将 Apple Health 导出的时间序列数据转换为 xts 格式。 但是,我无法获得正确的数据格式。
new = health_df %>%
mutate(
Type = str_remove(type, "HKQuantityTypeIdentifier"),
Value = as.numeric(as.character(value)),
Date = as_datetime(creationDate)) %>%
filter(Type == 'HeartRate') %>%
select(Date, Type, Value)
> head(new)
# A tibble: 6 x 3
Date Type Value
<dttm> <chr> <dbl>
1 2021-07-27 13:12:32 HeartRate 80
2 2021-07-27 13:12:38 HeartRate 79
3 2021-07-27 13:12:42 HeartRate 76
4 2021-07-27 13:12:47 HeartRate 73
5 2021-07-27 13:12:52 HeartRate 71
6 2021-07-27 13:12:57 HeartRate 71
> class(new$Date)
[1] "POSIXct" "POSIXt"
> new = as.xts(new, dateFormat = "POSIXct")
Error in as.POSIXlt.character(x, tz, ...) :
character string is not in a standard unambiguous format
as.POSIXlt.character(x, tz, ...) 中的错误: 字符串不是标准的明确格式
我检查了课程,但一切似乎都很好...... 我也尝试指定格式
Date = as.POSIXct((Date), format = "%Y.%m.%d %H:%M:%S", tz="GMT"))
但这也没有用。
也许我走错了路,感谢您的帮助! 最好的 C
【问题讨论】:
查看您的日期,格式应为“%Y-%m-%d %H:%M:%S”, tz="GMT"。此外,您使用 as.xts 的方式将产生一个字符矩阵。如果需要 xts 矩阵,则需要从 data.frame 中删除 Date 和 Type。 【参考方案1】:正如@phiver 提到的,您只需要在xts
矩阵中保留数字数据。此外,由于 Date
列已经是 POSIXct
类型,因此您无需更改它。试试 -
new_xts <- xts::xts(new$Value, order.by = new$Date)
【讨论】:
谢谢! new_xts以上是关于苹果健康时间序列 as.xts as.POSIXlt.character(x, tz, ...) 中的错误:字符串不是标准的明确格式 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 苹果健康架构 & 基于HealthKit的健康数据的编辑
HKMetadataKeyTimeZone 对于由苹果的 Health App - HealthKit - iOS 创建的健康数据始终为零
HKMetadataKeyTimeZone 对于由苹果的 Health App - HealthKit - iOS 创建的健康数据始终为零