データフレームをロング フォーマットからワイド フォーマットに変換したいのですが、グループ サイズが等しくありません。
最終的には「qcc」で使用されます。これは、サンプルが少ないグループで NA を使用して、各行が 1 つのグループで構成されるデータ フレームまたは行列を必要とします。
次のコードは、サンプル データセットを作成し、目的の形式への手動変換を示します。
# This is an example of the initial data that I have
# * 10 sample measurements, over 3 groups with 3, 2, and 5 elements respectively
x <- rnorm(10)
x_df <- data.frame( time = c( rep('2001 Q1',3), rep('2001 Q2',2), rep('2001 Q3',5) ), measure = x )
x_df
# This is a manual conversion into the desired format
x_pad <- c( x[1:3], NA, NA, x[4:5], NA, NA, NA, x[6:10] )
x_matrix <- matrix( x_pad, nrow = 3, ncol = 5, byrow = TRUE, dimnames = list(c('2001 Q1','2001 Q2','2001 Q3')) )
x_matrix # desired format
# An example of how it will be used
library(qcc)
plot(qcc(x_matrix, type = 'xbar', plot = FALSE))
だから、私はこれを変換したいと思います:
time measure
1 2001 Q1 0.14680685
2 2001 Q1 0.53593193
3 2001 Q1 0.56097974
4 2001 Q2 -1.48102689
5 2001 Q2 0.18150972
6 2001 Q3 1.72018147
7 2001 Q3 -0.08480855
8 2001 Q3 -2.23208877
9 2001 Q3 -1.15269107
10 2001 Q3 0.57975023
...これに...
[,1] [,2] [,3] [,4] [,5]
2001 Q1 0.1468068 0.53593193 0.5609797 NA NA
2001 Q2 -1.4810269 0.18150972 NA NA NA
2001 Q3 1.7201815 -0.08480855 -2.2320888 -1.152691 0.5797502
おそらく簡単な方法があります (おそらく、私が慣れていない reshape または reshape2 キャストの使用法でしょうか?) が、これまでのところ、多くの検索が役に立ちませんでした。
助けてくれてありがとう!
==========
以下のソリューションの 1 つから、グループ ラベルを含む最終的な qcc xbar プロットが生成されます。
library(splitstackshape)
out_df <- dcast( getanID( x_df, 'time' ), time~.id, value.var='measure' )
qcc( out_df[,-1], type = 'xbar', labels = out_df[,1] )