首页 > 解决方案 > seqformat 在 R 中创建具有 NA 值的序列

问题描述

seqformat在 R 中使用来分析事件的顺序。

例如,我有这些数据用于练习,我有一个巨大的数据集,但我用它来理解函数格式:

   
 Location_Id     Event       Start_day    End_day   temp    year         
     1         Sever snow       6              12     4     2014          
     1         Medium snow      15             21     6     2016          
     2         Sever snow       7              8      3     2013

我使用了这个命令:

sts.data <- seqformat(df, from="SPELL", to="STS", id="Event", begin="Start_day", end="End_day", status="temp",limit=3)

当我运行命令时,我收到此消息

    [!!] max of 'end' column > limit! Sequences truncated at limit= 3     [>]

converting SPELL data into 2 STS sequences (internal format)

 具有 NA 值的输出如下

                          

                 a1    a2    a3
Sever snow       NA    NA    NA       
Medium snow      NA    NA    NA

我不确定end参数是否需要大于begin所有事件中的参数,或者这不是问题。 

请对我为什么不能成功创建这一系列事件有任何想法吗?

标签: rregressionsequencetraminer

解决方案


参数设置序列的limit最大长度。在您的数据中,第一个有效信息是在第 6 天,因此,前三个位置(天)是 NA。

最新的有效信息是第 21 天。为避免序列截断,设置limit=21或更大。另请注意,当 id 不连续时,该函数可能会产生意外结果。由于您使用的是 id,因此我对byEvent的行进行排序以使 id 连续。dfEvent

df <- read.table(header=TRUE, text = "
Location_Id     Event       Start_day    End_day   temp    year
     1         Sever.snow       6              12     4     2014          
     1         Medium.snow      15             21     6     2016          
     2         Sever.snow       7              8      3     2013
                 ")
## Event used as id: sort to make identical ids contiguous
df <- df[order(df[,"Event"]),]
sts.data <- seqformat(df, from="SPELL", to="STS", id="Event",
        begin="Start_day", end="End_day", status="temp",limit=21)
sts.data
#             a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21
# Medium.snow NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA   6   6   6   6   6   6   6
# Sever.snow  NA NA NA NA NA  4  3  3  4   4   4   4  NA  NA  NA  NA  NA  NA  NA  NA  NA

推荐阅读