配对数据,将两个变量放入列联表中

时间:2018-07-16 01:56:54

标签: r

我有一个带有两个类别变量的配对数据集,其中一个是有序的(年份和范围)

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

我知道我可以手动创建矩阵,但是我的数据集太大而无法实现。有什么想法可以更有效地做到这一点吗?

编辑:我需要保持“程度”以保持排序(一点也不,部分,基本上,完全)以进行进一步的分析。

2 个答案:

答案 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