私はこのデータフレームを持っています:
df <- data.frame(subject = c(rep("one", 20), c(rep("two", 20))),
                 score1 = sample(1:3, 40, replace=T),
                 score2 = sample(1:6, 40, replace=T),
                 score3 = sample(1:3, 40, replace=T),
                 score4 = sample(1:4, 40, replace=T))
   subject score1 score2 score3 score4
1      one      2      4      2      2
2      one      3      3      1      2
3      one      1      2      1      3
4      one      3      4      1      2
5      one      1      2      2      3
6      one      1      5      2      4
7      one      2      5      3      2
8      one      1      5      1      3
9      one      3      5      2      2
10     one      2      3      3      4
11     one      3      2      1      3
12     one      2      5      2      1
13     one      2      4      1      4
14     one      2      2      1      3
15     one      1      3      1      4
16     one      1      6      1      3
17     one      3      4      2      2
18     one      3      2      1      3
19     one      2      5      3      1
20     one      3      6      2      1
21     two      1      6      3      4
22     two      1      2      1      2
23     two      3      2      1      2
24     two      1      2      2      1
25     two      2      3      1      3
26     two      1      5      3      3
27     two      2      4      1      4
28     two      2      6      2      4
29     two      1      6      2      2
30     two      1      5      1      4
31     two      2      1      2      4
32     two      3      6      1      1
33     two      1      1      3      1
34     two      2      4      2      3
35     two      2      1      3      2
36     two      2      3      1      3
37     two      1      2      3      4
38     two      3      5      2      2
39     two      2      1      3      4
40     two      2      1      1      3
スコアの値の範囲が異なることに注意してください。スコア 1 は 1 ~ 3 の範囲、スコア 2 は -6 の範囲、スコア 3 は 1 ~ 3 の範囲、スコア 4 は 1 ~ 4 の範囲です。
私はこのようにデータを再形成しようとしています:
library(reshape2)
dfMelt <- melt(df, id.vars="subject")
acast(dfMelt, subject ~ value ~ variable)
Aggregation function missing: defaulting to length
, , score1
    1 2 3 4 5 6
one 6 7 7 0 0 0
two 8 9 3 0 0 0
, , score2
    1 2 3 4 5 6
one 0 5 3 4 6 2
two 5 4 2 2 3 4
, , score3
     1 2 3 4 5 6
one 10 7 3 0 0 0
two  8 6 6 0 0 0
, , score4
    1 2 3 4 5 6
one 3 6 7 4 0 0
two 3 5 5 7 0 0
欠落している場合、出力配列にはスコアが「0」として含まれることに注意してください。これらの不足しているスコアが によって出力されるのを止める方法はありますacastか?