0

db2 つのカテゴリ変数を持つデータフレームがあります: varA4 つのレベル ( 01、)、22つのレベル ( 、) があります。のレベル 0 の値がありません:3varByesnovarBvarA

id  varA    varB
1   2       yes
2   3       no
3   3       no
4   1       yes
5   0       NA
6   1       no
7   2       no
8   3       yes
9   3       yes
10  2       no

CrossTableパッケージを使用して分割表を作成し、関数を使用しdescrてモザイク プロットを作成しました。plot

table <- CrossTable(db$varA,db$varB, missing.include=FALSE)
plot(table,xlab="varA",ylab="varB")

私はこのプロットを得ました:

モザイク プロット

プロットからレベル 0 を削除したいと思います。また、プロットの左側に 0 から 1 のスケールで 1 つ、右側に 1 から 0 のスケールで 2 つの y 軸を追加したいと思います。

私たちを手伝ってくれますか?

4

1 に答える 1

0

まあ、それは迷惑でした。このような「CrossTable」オブジェクトのサブセット化はサポートされていません。それが正常に動作するテーブルのようなオブジェクトである場合はtable[ , -1]、プロット関数に渡すだけで済みます。代わりに、CrossTable に渡されるデータの前にサブセット化を行う必要があります。

table <- with( na.omit(db), CrossTable( varA, varB, missing.include=TRUE))
plot(table, xlab="varA", ylab="varB")

ところで、データ オブジェクトの名前を使用することは、関数が基本的なツールの 1 つであるtableため、通常の R ユーザーにとって非常に混乱します。table

個人的には、その出力が非常に奇妙で、典型的な R 関数では管理できないため、その CrossTable 関数の使用は避けたいと思います。tableええ、私はそれが SAS のような出力を生成することを知っていますが、R ユーザーは、関数のコンパクトな出力と、テーブル オブジェクトを操作するために使用できる多くの行列演算を愛するようになります。を使用してマージン率を手動で取得する必要がある場合がありますprop.table

于 2013-12-01T17:55:39.233 に答える