r - 如何计算R中的转移概率
问题描述
我想通过人年组合(面板数据)计算值之间变化的频率。这模仿了 Stata 的命令xttrans
。不应包括索引 6 和 7 之间的过渡,因为它不是一个人内部的过渡。
df = data.frame(id=c(1,1,1,1,1,1,1,2,2,2,2,2,2,2),
year=seq(from=2003, to=2009, by=1),
health=c(3,1,2,2,5,1,1,1,2,3,2,1,1,2))
解决方案
这是按组计算转换计数的基本 R 解决方案id
:
with(df, do.call(`+`, tapply(health, id, function(x){
x <- factor(x, levels = min(health, na.rm = T):max(health, na.rm = T))
table(x[-length(x)], x[-1])
})))
# 1 2 3 4 5
# 1 2 3 0 0 0
# 2 1 1 1 0 1
# 3 1 1 0 0 0
# 4 0 0 0 0 0
# 5 1 0 0 0 0
推荐阅读
- gulp - 简洁不缩小函数名称
- drools - moqui 中的 KIE 组件,出现错误 Unable to resolve ObjectType
- python - argparse .ArgumentParser 引发 ArgumentError
- ruby - 在深度嵌套的哈希中对相同键的值求和
- php - Api 平台 - Symfony - 在持久函数中返回 json
- r - 将向量转换为矩阵
- scala - Scala Mockito:单位声明的丢弃非单位值
- html - 很难找到遵循路径的方法
- android - 为什么我们不能像写 public boolean onLongClick(View v) 那样写 public boolean onClick(View v)
- c# - C# 没有下载