我有一个带有两个类别变量的配对数据集,其中一个是有序的(年份和范围)
ID year extent
A 2017 Not at all
B 2017 Partially
A 2013 Substantially
C 2017 Fully
B 2013 Not at all
C 2013 Partially
我想转换成列联表以反映范围随时间的变化。
2017
2013 Not At All Partially Substantially Fully
Not At All 0 1 0 0
Partially 0 0 0 1
Substantially 1 0 0 0
Fully 0 0 0 0
我尝试将数据转换为频率表并使用xtabs,但是我无法在每个列/行中表示两个变量。
year
extent 2013 2017
Not at all 1 1
Partially 1 1
Substantially 1 0
Fully 0 1
我知道我可以手动创建矩阵,但是我的数据集太大而无法实现。有什么想法可以更有效地做到这一点吗?
编辑:我需要保持“程度”以保持排序(一点也不,部分,基本上,完全)以进行进一步的分析。
答案 0 :(得分:0)
您可以在应用table
table(df$extent[df$year==2017],df$extent[df$year==2013])
Fully Notatall Partially Substantially
Fully 0 0 1 0
Notatall 0 0 0 1
Partially 0 1 0 0
Substantially 0 0 0 0
答案 1 :(得分:0)
如果您要保持水平以及订购:
table(lapply(unstack(dat,extent~year),factor,levels=unique(dat$extent)))
X2017
X2013 Not at all Partially Substantially Fully
Not at all 0 1 0 0
Partially 0 0 0 1
Substantially 1 0 0 0
Fully 0 0 0 0