变量 R 之间的转换
Transition between variables R
我想计算变量之间转换的摘要。我的数据集看起来像:
id x.2012 y.2012 x.2013 y.2013
1 1 0 0 1
2 0 1 1 0
3 0 1 1 0
4 1 0 1 0
我想找到一个转换table:
x.2013 y.2013
x.2012 1 1
y.2012 2 0
因此,它会计算 x
的值变化了多少,因此下一年 y
到 y
的变化为零,y -> x
的变化为 2。
我不知道如何计算这样的 table,我正在查看 reshape2
and tidyr
文档,但没有成功。
理想情况下,我正在寻找类似 reshape
的软件包(我想不出 Google 搜索此关键字的关键字...),它与 cast
类似函数,fun
取 my.df
:
的子集
modern.cast(my.df, .(x.2012, y.2012) ~ .(x.2013, y.2013), fun)
一个可能的解决方案是
res <- data.frame(t(apply(df[-1], 1, function(x) names(df[-1])[x != 0])))
library(reshape2)
dcast(res, X1 ~ X2)
# X1 x.2013 y.2013
# 1 x.2012 1 1
# 2 y.2012 2 0
替代方法是使用 which
(这可能更有效)
indx <- which(df[-1] != 0, arr.ind = TRUE)
res <- data.frame(matrix(names(df)[-1][indx[order(indx[, 1]), 2]], ncol = 2, byrow = TRUE))
dcast(res, X1 ~ X2)
# X1 x.2013 y.2013
# 1 x.2012 1 1
# 2 y.2012 2 0
我想计算变量之间转换的摘要。我的数据集看起来像:
id x.2012 y.2012 x.2013 y.2013
1 1 0 0 1
2 0 1 1 0
3 0 1 1 0
4 1 0 1 0
我想找到一个转换table:
x.2013 y.2013
x.2012 1 1
y.2012 2 0
因此,它会计算 x
的值变化了多少,因此下一年 y
到 y
的变化为零,y -> x
的变化为 2。
我不知道如何计算这样的 table,我正在查看 reshape2
and tidyr
文档,但没有成功。
理想情况下,我正在寻找类似 reshape
的软件包(我想不出 Google 搜索此关键字的关键字...),它与 cast
类似函数,fun
取 my.df
:
modern.cast(my.df, .(x.2012, y.2012) ~ .(x.2013, y.2013), fun)
一个可能的解决方案是
res <- data.frame(t(apply(df[-1], 1, function(x) names(df[-1])[x != 0])))
library(reshape2)
dcast(res, X1 ~ X2)
# X1 x.2013 y.2013
# 1 x.2012 1 1
# 2 y.2012 2 0
替代方法是使用 which
(这可能更有效)
indx <- which(df[-1] != 0, arr.ind = TRUE)
res <- data.frame(matrix(names(df)[-1][indx[order(indx[, 1]), 2]], ncol = 2, byrow = TRUE))
dcast(res, X1 ~ X2)
# X1 x.2013 y.2013
# 1 x.2012 1 1
# 2 y.2012 2 0