R语言seqformat函数生成序列全为NA值问题咨询
问题原因与解决方法
- id参数误用
seqformat的id参数用于指定独立序列的唯一标识字段,你当前传入了Event字段,相当于将每类事件作为单独序列处理,而非按地点、年份等实际序列维度分组。你原来输出的两行Sever snow、Medium snow就是系统将两类事件识别为两个独立序列的结果。 - limit参数设置不符合数据时间范围
你设置的limit=3代表仅生成前3天的序列数据,但示例中所有事件的Start_day最小为6,所有事件都不在1-3天的时间范围内,自然全为NA值。运行时给出的警告就是提示你事件最大结束天数远大于设定的截断阈值3,所有超出部分会被截断,最终恰好截断到所有事件都未开始的时间区间。 - 关于
end是否需要大于begin的疑问:SPELL格式本身要求每条记录的end值大于begin值,你的示例数据满足该要求,这不是本次序列生成失败的原因。
修正方案
将id参数改为你实际的序列标识(比如示例中的Location_Id,如果需要按年份+地点分组可提前生成合并字段),同时将limit设置为不小于你数据中最大End_day的值,示例修正代码如下:
# 按Location_Id作为序列标识,limit取最大End_day值21 sts.data <- seqformat(df, from="SPELL", to="STS", id="Location_Id", begin="Start_day", end="End_day", status="temp",limit=21)
内容的提问来源于stack exchange,提问作者Reta
相关产品推荐
相关产品推荐

