可以说我有这些数据 . 我的目标是序列的extraxt组合 .
我有一个约束,两个事件之间的时间可能不超过5,让我们调用 maxGap
.
User <- c(rep(1,3)) # One users
Event <- c("C","B","C") # Say this is random events could be anything from LETTERS[1:4]
Time <- c(c(1,12,13)) # This is a timeline
df <- data.frame(User=User,
Event=Event,
Time=Time)
如果想将这些序列用作二进制解释变量进行分析 .
给定此数据帧,结果应该是这样的 .
res.df <- data.frame(User=1,
C=1,
B=1,
CB=0,
BC=1,
CBC=0)
自 maxGap
> 5以来,(CB)和(CBC)将为0 .
我试图使用许多for循环为此编写一个函数,但是如果序列变大并且不同数量的evet也变得更大,它变得非常复杂 . 并且如果不同用户的数量增长到10万 .
是否可以在 seqeconstraint
的帮助下在TraMineR中执行此操作?
1 回答
以下是如何使用
TraMineR
这使
presence
是一个表,其中包含每个子序列的列,该列在数据集中至少出现一次 . 因此,如果您有多个个体(事件序列),则表中每个人将有一行,并且列将是您要查找的二进制变量 . (另见TraMineR: Can I get the complete sequence if I give an event sub sequence?)但是,请注意
TraMineR
仅适用于长度最多约为4或5的子序列 . 我们建议在seqefsub
中设置maxK=3
或4
. 只要你限制你正在寻找的最大子序列长度,个体数量就不应该是问题,也不应该是不同可能事件(字母表)的数量 .希望这可以帮助