如何将tibble转换为tsibble并解决as_tsibble()运行报错问题
tibble转tsibble报错解决方法
错误原因
你调用as_tsibble时的参数写法和数据格式存在两个问题:
key和index参数仅需要传入未加引号的列名,不需要用数据集$列名的形式传入整列数据,你传入的absence$All Staff是一整列double类型的数值,R尝试将其转换为整数型的列下标时触发了精度损失报错- 你的
year列为字符格式,不符合tsibble对时间索引的格式要求,需要转换为整数/日期格式
解决方案
根据你后续的使用需求,可选择以下两种方案:
方案1:直接转换为宽格式tsibble
适合不需要按员工类别拆分分析的场景:
library(dplyr) library(tsibble) # 转换year列格式 absence_clean <- absence %>% mutate(year = as.integer(year)) # 转tsibble,无分组时key设为NULL absence_ts <- as_tsibble(absence_clean, index = year, key = NULL)
方案2:先转长格式再转换为tsibble(更推荐)
长格式更适配ggplot2绘图、时间序列分组分析的需求:
library(dplyr) library(tidyr) library(tsibble) absence_long <- absence %>% # 转换year列格式 mutate(year = as.integer(year)) %>% # 宽表转长表 pivot_longer( cols = -year, names_to = "staff_type", values_to = "absence_rate" ) # 转tsibble,用staff_type作为分组key absence_ts_long <- as_tsibble(absence_long, index = year, key = staff_type)
内容的提问来源于stack exchange,提问作者Joseph Droogan
相关产品推荐
相关产品推荐

