2

次のようなデータセットがあります。

   ID    X   Y   Z   
1  T1    10  0   10 
2  T2    0   0   20 
3  T3    10  10  40
4  T4    0   30  10
5  T5    0   10  0 
...

reshape2 を使用してデータを分解し、それを VennDiagram パッケージに投入して、データセットの交差を視覚化できます。しかし。カウントのみを視覚化できます (合計ではありません)。

VennDiagram は、T1 のみを「1」の XZ 交差点として認識します。パッケージを「20」とカウントしたい。そして、T3 の場合、XYZ の「1」カウントだけではなく、合計して「60」になるようにしたいと考えています。

ベン図マニュアル: cran.r.project.org

前もって感謝します!

編集:

出力は次のようになります... nrows が合計を合計する場所

(この現在の出力はカウントを取得するだけです)

grid.newpage()
draw.triple.venn(area1 = nrow(subset(accounts, X > 1)),
             area2 = nrow(subset(accounts, Y > 1)), 
             area3 = nrow(subset(accounts, Z > 1)), 
             n12 = nrow(subset(accounts, X > 1 & Y > 1)), 
             n23 = nrow(subset(accounts, Y > 1 & Z > 1)), 
             n13 = nrow(subset(accounts, X > 1 & Z > 1)), 
             n123 = nrow(subset(accounts, X > 1 & Y > 1 & Z > 1)), 
             category = c("X", "Y", "Z"), 
             lty = "blank",
             fill = c("pink1","mediumorchid","skyblue"))
4

2 に答える 2

2

パッケージは、library(VennDiagram)期待どおりに動作しません。

テーブルがあるかもしれません:

A1 A2 Overlap 
1  1  2

そして、2 つのベン図が1左の円、1右の円、および2重複部分に反映されるようにします。

このコードの実行:

grid.newpage()
draw.pairwise.venn(area1 = 1,
                   area2 = 1,
                   cross.area = 2)

生成されます:

Error in draw.pairwise.venn(area1 = 1, area2 = 1, cross.area = 2) : Impossible: cross section area too large.

そのため、各領域にオーバーラップを追加して、ベン図ライブラリをごまかす必要があります。そうすれば、目的の 1;2;1 が得られます。

grid.newpage()
draw.pairwise.venn(area1 = 1 +  2,
                   area2 = 1 +  2,
                   cross.area = 2)
于 2015-03-20T14:50:18.713 に答える
0

sumの代わりに使いたいと思いますnrow。また、サブセットのロジックを監視し、おそらくn12n23、およびに条件を追加する必要がありn23ます。

たとえば、次のn23ものが必要になります。Y > 1 & Z > 1 & X < 1-- の追加に注意してくださいX < 1。これはあなたが求めているものに近いはずです:

draw.triple.venn(area1 = sum(subset(accounts, X > 1)),
                 area2 = sum(subset(accounts, Y > 1)), 
                 area3 = sum(subset(accounts, Z > 1)), 
                 n12 = sum(subset(accounts, X > 1 & Y > 1 & Z < 1)), 
                 n23 = sum(subset(accounts, Y > 1 & Z > 1 & X < 1)), 
                 n13 = sum(subset(accounts, X > 1 & Z > 1 & Y < 1)), 
                 n123 = sum(subset(accounts, X > 1 & Y > 1 & Z > 1)), 
                 category = c("X", "Y", "Z"), 
                 lty = "blank",
                 fill = c("pink1","mediumorchid","skyblue"))
于 2015-01-26T22:39:08.723 に答える