2

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

  1. 从这个序列开始:

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

  2. seqdss然后使用以下函数计算提取的不同状态:

    1230 D-A-D

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

4

3 回答 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 
于 2013-06-23T15:17:45.063 回答
0

我可能在这里遗漏了一些东西,但看起来你正在寻找unique

于 2013-06-23T13:24:28.937 回答
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
于 2013-06-23T14:04:27.023 回答