首页 文章

TraMineR序列中不同状态/事件的数量

提问于
浏览
2

我有兴趣计算我的数据集的每个序列中存在的不同状态的数量 . 为简单起见,我将使用TraMineR示例:

  • 从这个序列开始:

1230 D-D-D-D-A-A-A-A-A-A-A-D

  • 然后使用 seqdss 函数计算提取不同的状态:

1230 D-A-D

是否有一个函数来提取序列中不同状态的总数,只考虑状态的存在而不是它沿序列的潜在重复?换句话说,对于上述情况,我想获得一个包含该序列的向量值 2 (事件 A 和事件 D )而不是3(1个事件 A 2个事件 D ) .
谢谢 .

3 回答

  • 3

    您可以通过首先使用 seqistatd 计算每个序列的状态分布,然后对 seqistatd 返回的矩阵的每一行中的非零元素的数量求和来计算不同状态的数量 . 我在下面使用biofam数据说明:

    library(TraMineR)
    data(biofam)
    bf.seq <- seqdef(biofam[,10:25])
    
    ## longitudinal distributions 
    bf.ldist <- seqistatd(bf.seq)
    n.states <- apply(bf.ldist,1,function(x) sum(x != 0))
    
    ## displaying results
    bf.ldist[1:3,]
         0  1 2 3 4 5 6 7
    1167 9  0 0 1 0 0 6 0
    514  1 10 0 1 0 0 4 0
    1013 7  5 0 1 0 0 3 0
    
    n.states[1:3]
    1167  514 1013 
       3    4    4
    
  • 0

    我可能在这里遗漏了一些东西,但看起来你好像是在追求 unique .

  • 0

    您的预期结果不明确(可能是因为您用英语而不是伪代码描述它) . 我猜你在寻找 table 来计算每个科目的州数 . 我在这里使用 TraMineR 包提供:

    library(TraMineR)
    data(actcal)
    actcal.seq <- seqdef(actcal,13:24)
    head(actcal.seq )
    
         Sequence               
    2848 B-B-B-B-B-B-B-B-B-B-B-B
    1230 D-D-D-D-A-A-A-A-A-A-A-D
    2468 B-B-B-B-B-B-B-B-B-B-B-B
    654  C-C-C-C-C-C-C-C-C-B-B-B
    6946 A-A-A-A-A-A-A-A-A-A-A-A
    1872 D-B-B-B-B-B-B-B-B-B-B-B
    

    现在将 table 应用于第4行,例如:

    tab <- table(unlist(actcal.seq[4,]))
    tab[tab>0]
    B C 
    3 9
    

相关问题