1

n-way 頻度表を作成するのに助けが必要です。

以下のコードを使用しています。

 tab <- table(VAR1,VAR2,VAR3)
finaltab <- ftable(tab,row.vars=c(2,3))
print(finaltab)

VAR1、VAR2、VAR3 はすべて因子変数です。これを行うことで、次の表を作成します。

表1

しかし、VAR2 と VAR3 にはいくつかのカテゴリがあるため、「0」の行がたくさんあります。次のように、実際に頻度値を持つ VAR3 のカテゴリの頻度のみを VAR2 のどのカテゴリに保持するために、これらの行を削除する必要があります。

状況を含む最初のテーブルと、目的の出力を含む 2 番目のテーブル

最初に作成したテーブルをサブセット化するか、各 VAR2 カテゴリの VAR3 のすべてのレベルを返すのではなく、実際に頻度があるレベルのみを返す別の関数を使用して、その方法を知っている人はいますか?

4

1 に答える 1

0

分割表では、すべてのカテゴリに同じ数の行があります。1 つのカテゴリから行を削除すると、テーブルではなくマトリックスになります。

t <- structure(c(0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L), .Dim = c(3L, 2L, 3L), .Dimnames = structure(list(c("A", "B", "C"), c("A", "B"), c("A", "B", "C")), .Names = c("","", "")), class = "table")
> (ft <- ftable(t, row.vars=c(2,3)))
     A B C

A A  0 0 1
  B  1 1 1
  C  0 1 0
B A  1 1 0
  B  0 0 0
  C  1 1 1
> ft[apply(ft, 1, any), ]
     [,1] [,2] [,3]
[1,]    0    0    1
[2,]    1    1    1
[3,]    0    1    0
[4,]    1    1    0
[5,]    1    1    1

テーブルのサブセット化の残念な結果は、名前が失われることです。これは、サブセットを取得する前にテーブルを強制的に行列にすることである程度軽減できますが、印刷された出力は依然として分割表ほどきれいではありません。

> as.matrix(ft)[apply(ft, 1, any), ]

_     A B C
  A_A 0 0 1
  A_B 1 1 1
  A_C 0 1 0
  B_A 1 1 0
  B_C 1 1 1
于 2016-02-03T12:16:55.040 に答える