0

2つの因子があり、それらを同じプロットにグラフ化したい場合、両方の因子のレベルは同じです。

s1 <- c(rep("male",20), rep("female", 30))
s2 <- c(rep("male",10), rep("female", 40))
s1 <- factor(s1, levels=c("male", "female"))
s2 <- factor(s2, levels=c("male", "female"))

table関数を使用すると、グラフ化に正しい結果が得られると思いましたが、飛び出します。

table(s1, s2)
        s2 
s1       male female   
male     10     10   
female    0     30

では、実際には2つの質問があります。この結果を得るためにテーブル関数は何をしているのでしょうか。また、同じレベルの関数を使用して2つの系列のグラフを作成するために他にどのような関数を使用できますか。

また、それが要因である場合は、gplotsパッケージのbarplot2を使用してグラフ化します。

4

4 に答える 4

6

ラティスパッケージを使用すると、もう少し詳細な結果を得ることができます。

s1 <- factor(c(rep("male",20), rep("female", 30)))
s2 <- factor(c(rep("male",10), rep("female", 40)))
D <- data.frame(s1, s2)

library(lattice)
histogram(~s1+s2, D, col = c("pink", "lightblue"))

代替テキスト

または、比較を容易にするために男性/女性を並べて表示したい場合:

t1 <- table(s1)
t2 <- table(s2)
barchart(cbind(t1, t2), stack = F, horizontal = F)

代替テキスト

于 2010-11-01T09:12:47.187 に答える
3

差出人?table

「テーブル」は、クロス分類ファクターを使用して、ファクターレベルの各組み合わせでのカウントの分割表を作成します。

table(s1,s2)が起こるかというと、関数はペアの結果s1と見なします。s2事実上、それはあなたが取るとしたらcbind(s1,s2)、男性-男性の10列、男性-女性の10列などがあることをあなたに伝えます。

これを理解するために、非常に些細な例を考えてみましょう。

a <- c("M","M","F","F")
b <- c("F","F","M","M")
table(a,b)

  b
a   F M
  F 0 2
  M 2 0

あなたがすべきことは:

t1 <- table(s1)
t2 <- table(s2)
barplot(cbind(t1,t2), beside=TRUE, col=c("lightblue", "salmon"))
于 2010-11-01T07:54:46.147 に答える
3

わずかに異なる形式のプロットを生成する2つのオプションは次のとおりです。

plot(s1, s2)

plot(table(s1,s2))

前者は、モザイクプロットの特殊なケースであるスピネプロットであり、このplot方法でtable生成されます(2番目の例)。詳細については?spineplot、を参照してください。必要に応じ?mosaicplotて、汎用関数ではなく、これらの関数を直接使用できますplot()

Meyer et alによるCRANmosaic()のパッケージ内の関数も見てください(CRANのvcdへのリンク)vcd

table()2つの要因の分割表を作成しています。

于 2010-11-01T07:55:45.490 に答える
1

うーん..分割表を作成することはキャメロンが探していたものではないと思います。彼を正しく理解していれば、彼は2つの変数を含むデータフレームを作成したいと思っていたと思います。ここで、s1とs2は同じサイズのベクトルのようです。(length(s1)== length(s2))。

この場合、彼は以下を使用して「テーブル」(彼はdata.frameを意味していると思います)を作成する必要があります。

df = data.frame(s1=s1, s2=s2);

次に、2つのシリーズを同じプロットにプロットします。

したがって、これらをプロットする2番目の質問については、matplotを使用します。例えば:

matplot(1:10, data.frame(a=rnorm(10), b=rnorm(10)), type="l", lty=1, lwd=1, col=c("blue","red"))

2つのベクトルのデータが「df」という名前の単一のdata.frameに編成されているとすると、次のようなことができます。

matplot(df, type="l", lty=1, lwd=1, col=c("blue","red"))

お役に立てれば。

于 2010-11-01T21:38:45.600 に答える