Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在观测值内识别随时间变化的模式(R)_R_Traminer - Fatal编程技术网

在观测值内识别随时间变化的模式(R)

在观测值内识别随时间变化的模式(R),r,traminer,R,Traminer,我有数年来数千人的转移支付数据,每个月都有记录,无论观察者当月是否收到付款。我想知道,理论上提出的某些类型的转移接收机是否能被数据所证实。为此,我计划先做一些描述性统计,然后使用包TraMineR 然而,首先,我想简单地找出哪个观察符合哪个类别。例如,其中一类是短期接受经济援助的人,他们只出现一次。因此,我需要确定所有只收到三个月(或更短)付款的观察者。此外,这些接受援助的时间是不能中断的,因此,如果有人接受了两个月的援助,两个月没有,然后又接受了一个月的援助,这已经是一个不同的类别。以下是仅一

我有数年来数千人的转移支付数据,每个月都有记录,无论观察者当月是否收到付款。我想知道,理论上提出的某些类型的转移接收机是否能被数据所证实。为此,我计划先做一些描述性统计,然后使用包
TraMineR

然而,首先,我想简单地找出哪个观察符合哪个类别。例如,其中一类是短期接受经济援助的人,他们只出现一次。因此,我需要确定所有只收到三个月(或更短)付款的观察者。此外,这些接受援助的时间是不能中断的,因此,如果有人接受了两个月的援助,两个月没有,然后又接受了一个月的援助,这已经是一个不同的类别。以下是仅一年和30次观察的一个小例子:

dat <- data.frame(matrix(c(0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0),ncol=12))

dat您可以使用此功能识别连续付款期的数量以及每个期间的月数:

aid <- lapply(apply(dat, 1, rle), function(x) unname(x$lengths[x$values==1]))
表示第1行没有期间,第8行有一个为期3个月的期间,第13行有两个为期1个月的期间

要了解每行有多少个连续的句点,可以使用以下命令:

cont <- sapply(aid, length)

请注意,只有第13行有两个独立的句点。

您可以使用
rle
函数在不同时间过滤哪些行的值等于1

idx <- apply(dat,1,function(x){
  y <- rle(x)
  length(y$lengths[y$values ==1])> 1
})

dat[idx,]
   X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12
13  0  0  0  0  0  0  0  0  1   0   0   1

谢谢,看起来很有希望!我玩弄了apply函数,但没有让它工作。再次感谢。
> cont
[1] 0 1 1 0 0 0 1 1 0 0 1 1 2 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0
> cont[13]
[1] 2
idx <- apply(dat,1,function(x){
  y <- rle(x)
  length(y$lengths[y$values ==1])> 1
})

dat[idx,]
   X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12
13  0  0  0  0  0  0  0  0  1   0   0   1
rowSums(dat[!idx,]) <=3