我从我的 SPELL 格式数据集中创建了一个序列对象。序列对象的序列长度为 1440(即一天间隔 1 分钟)。
TraMineR 是否有任何简单的方法可以将序列长度从 1440 转换为 288(即 5 分钟间隔),使用每个时间间隔的第一分钟的状态来表示该 5 分钟期间个人的状态?
我从我的 SPELL 格式数据集中创建了一个序列对象。序列对象的序列长度为 1440(即一天间隔 1 分钟)。
TraMineR 是否有任何简单的方法可以将序列长度从 1440 转换为 288(即 5 分钟间隔),使用每个时间间隔的第一分钟的状态来表示该 5 分钟期间个人的状态?
另一种解决方案是使用包seqgranularity提供的功能TraMineRextras。这个函数使用不同的方法改变时间粒度,当前要么是"first"状态,要么是"last"状态,但未来应该实现其他方法,例如选择聚合法术中最频繁的状态。
对于上面的示例,您只需使用
mvadg.seq.year <- seqgranularity(mvad.seq, tspan=12, method = "first")
TraMineRextras应该在不久的将来在 CRAN 上提供。同时,如果你有最新版本的 R,你可以从 R-Forge 安装它
install.packages("TraMineRextras", repos="http://R-Forge.R-project.org")
您可以简单地选择相应的列。在您的情况下,这应该是第 1、6、11 列...您可以使用“seq”函数获取列索引:
column.5min <- seq(from = 1, to = 1440, by=5)
现在您可以选择列,例如使用:
myseq5min <- myseq[, column.5min]
这是一个使用“mvad”数据集并选择每年的第一个州的示例。
## Loading the library
library(TraMineR)
data(mvad)
## Defining sequence properties
mvad.alphabet <- c("employment", "FE", "HE", "joblessness", "school", "training")
mvad.lab <- c("employment", "further education", "higher education", "joblessness", "school", "training")
mvad.shortlab <- c("EM", "FE", "HE", "JL", "SC", "TR")
## The state sequence object.
mvad.seq <- seqdef(mvad, 17:86, alphabet = mvad.alphabet, states = mvad.shortlab, labels = mvad.lab, xtstep = 6)
## Now select the column every year (every twelve monthes)
mvad.seq.year <- mvad.seq[, seq(from=1, to=70, by=12)]
seqdplot(mvad.seq.year)