0

私は新しい R ユーザーで、棒グラフで一部のデータをグラフ化するのに問題があります。これが本当に簡単な場合は事前に申し訳ありませんが、私にはそれがわかりません。6 セットのデータがあります。1、5、および 10 歳の車 #1 の 3 つのデータ セットと、1、5、および 10 歳の車 #2 の 3 つのデータ セットです。 1.) 車の外装のへこみの総数と 2.) 塗装を剥がしたへこみの数を数えます。各車とそれぞれの年齢に対応する 6 つの棒グラフを作成したいと思います。列の高さは、標準偏差棒を使用して、塗装を剥がしたへこみの総数です。これまでに試したことは次のとおりです(2つのデータセットのみが含まれています):

car1yr1 = c(rep(0, 101), rep(1, 9)) #car has 9 dents that remove paint

car1yr5 = c(rep(0, 131), rep(1, 19)) #car has 19 dents that remove paint

sd1 = sd(car1yr1)

sd2 = sd(car1yr5)

stdv = c(sd1, sd2)

car1yr1 = car1yr1[1:150]

dentsCar1 = data.frame("Car1Yr1" = car1yr1, "Car1Yr5" = car1yr5)

barplot(as.matrix(dentsCar1, ylim = c(0, 50), beside = TRUE))

エラーバーの例を見つけました: arrows(bar, x, bar, x+ -(stdv), length = 0.15, angle = 90)、しかし、これを私の数値で動作させることはできません。また、この例では、y 軸は 15 で停止しますが、バー Car1Yr5 は 19 まで続きます。y 軸を 20 または 30 まで描画するにはどうすればよいですか? 繰り返しますが、私はRの初心者であり、どんな助けも大歓迎です。私は約2週間、これを自分で解決しようとしています。ありがとう。

4

1 に答える 1

0

私はあなたのデータに少し混乱しています...あなたの例から、車1には塗料を除去しなかった101個のへこみと除去した9個のへこみがあり、車2には除去しなかった131個と除去した19個のへこみがあると仮定しています。

ここで、へこみの数の標準偏差を計算することはあまり意味がありません...カウントデータをプロットしているので、たとえば同じモデルの車がたくさんあり、必要でない限り、標準偏差はありません。車間のばらつきを参照してください。

最善の方法は、次のようにして塗料を除去したへこみの割合を計算することです。

car1yr1 = c(rep(0, 101), rep(1, 9)) #car has 9 dents that remove paint
car1yr5 = c(rep(0, 131), rep(1, 19)) #car has 19 dents that remove paint

# The total number of observations is the total number of dents
total.dents.1 <- length(car1yr1)
total.dents.5 <- length(car1yr5)
# The dents that remove paint are marked as 1, the others with 0, 
# so we can just sum all of the data to get the number of paint-removing dents
dents.paint.1 <- sum(car1yr1)
dents.paint.5 <- sum(car1yr5)
# Alternatively you can use
# dents.paint.1 <- length(which(car1yr1==1))
# Calculate the %
dents.paint.perc.1 <- dents.paint.1/total.dents.1
dents.paint.perc.5 <- dents.paint.1/total.dents.5

df <- data.frame(dents.paint.perc.1, dents.paint.perc.5)

# Plot the data. 
# ylim specifies the limits of the y axis
# ylab defines the axis title. 
# las=1 puts the labels on the y axis horizontally
# names defines the labels on the x axis
barplot(as.matrix(df)*100, ylim=c(0,20), 
        ylab="% dents removing paint", las=1,
        names=c("Car 1 year 1", "Car 1 year 5"))

*apply一般に、関数ファミリーを使用してすべてのデータセットに対して反復操作を実行できるように、すべてのデータを単一のリストに入れる方がはるかに優れています。これにより、よりクリーンで管理しやすいコードが得られます。また、さらにデータを追加すると、自動的にプロットに追加されます。

于 2013-09-22T18:06:40.627 に答える