0

質問があります。平均バーとエラーバーを使用して棒グラフを作成します。ここでは、2つの要素でグループ化されています。平均と標準誤差を取得するために、関数tapplyを使用しました。

しかし、要因の1つとして、1つのレベルを下げたいと思います。

だから私がしたことはした:

dataFE <- data[-which(plant=="FS"),] # this works fine, I get exactly the data set I want without the FS level of the factor plant 

次に、平均と標準誤差を取得するために、これを使用します。

means <- with(dataFE, as.matrix(tapply(leaves, list(plant, Orchestia), mean), nrow=2)

e <- with(dataFE, as.matrix(tapply (leaves, list(plant, Orchestia), function(x) sd(x)/sqrt(length(x))), nrow=2))

そして、何か奇妙なことが起こります。FSは計算されませんが、NAのあるテーブルに入れられます。

    row.names   no          yes
1   F           7.009022    5.307185

2   FS          NA          NA

3   S           2.837139    2.111054

これは必要ありません。これをbarplot2(パッケージgplots)で使用すると、FS用の空のバーが表示されますが、そのバーはまったく存在しないはずです。

それで、どんな使用法も素晴らしい棒グラフを得るための解決策または他の方法を持っていますか:)。とにかくありがとう!

4

1 に答える 1

2

あなたのデータのサンプルがなければ、私はただ推測を賭けます:

あなたのカラムプラントが要因です。そして、その値を持つ行を削除しても、「レベル」FSはまだ存在します。見るために使用levels(data$plant)します。droplevelsその後、それを取り除くために使用することができます。

dat <- data.frame(x=1:15, y=factor(letters[1:3]))

> levels(dat$y)
[1] "a" "b" "c"

dat <- dat[dat$y != 'a',]
> levels(dat$y)
[1] "a" "b" "c"
> 

> tapply(dat$x, dat$y, sum)
 a  b  c 
NA 40 45 
> 

> droplevels(dat$y)
 [1] b c b c b c b c b c
Levels: b c
> dat$y <- droplevels(dat$y)

> tapply(dat$x, dat$y, sum)
 b  c 
40 45 
> 
于 2012-07-24T14:49:06.357 に答える