5

4 つの選択肢がある質問があり、回答者が 0 つまたは 4 つの選択肢の任意の組み合わせを選択できるとします。変数にはABC、およびという名前が付けられ、D応答は以下のように data.frame に格納されます。

set.seed(1)
dat = data.frame(A = sample(c(0, 1), 20, replace=TRUE), 
                 B = sample(c(0, 1), 20, replace=TRUE), 
                 C = sample(c(0, 1), 20, replace=TRUE),
                 D = sample(c(0, 1), 20, replace=TRUE))

次のようにして、応答の組み合わせ (たとえば、A単独、またはA+ B、またはC+などで応答した数) を集計できDます。

data.frame(table(dat))
#    A B C D Freq
# 1  0 0 0 0    2
# 2  1 0 0 0    2
# 3  0 1 0 0    0
# 4  1 1 0 0    1
# 5  0 0 1 0    1
# 6  1 0 1 0    3
# 7  0 1 1 0    0
# 8  1 1 1 0    2
# 9  0 0 0 1    0
# 10 1 0 0 1    2
# 11 0 1 0 1    1
# 12 1 1 0 1    1
# 13 0 0 1 1    2
# 14 1 0 1 1    0
# 15 0 1 1 1    3
# 16 1 1 1 1    0

この出力で表される文字の組み合わせを示す新しい列を作成したいと思います。たとえば、行 4 はA+回答の数Bを表し、行 14 はA++回答の数を表しますCD

applyここで機能の 1 つが役立つと思いますが、どのように進めればよいかわかりません。

4

1 に答える 1

4
dat.t <- data.frame(table(dat))    
dat.t$combn <- apply(dat.t[,1:4] == 1, 1, function(x) paste(names(dat)[x], collapse=' + '))

> dat.t
   A B C D Freq         combn
1  0 0 0 0    2              
2  1 0 0 0    2             A
3  0 1 0 0    0             B
4  1 1 0 0    1         A + B
5  0 0 1 0    1             C
6  1 0 1 0    3         A + C
7  0 1 1 0    0         B + C
8  1 1 1 0    2     A + B + C
9  0 0 0 1    0             D
10 1 0 0 1    2         A + D
11 0 1 0 1    1         B + D
12 1 1 0 1    1     A + B + D
13 0 0 1 1    2         C + D
14 1 0 1 1    0     A + C + D
15 0 1 1 1    3     B + C + D
16 1 1 1 1    0 A + B + C + D
> 
于 2012-07-05T16:19:17.620 に答える