3

カリキュラムの好みを確認するために、教師に質問票が渡されました。彼らは約50のオプションから20のアイテムを選ばなければなりませんでした。結果のデータは、次のタイプの選択肢の長いリストです:教師ID、質問ID

教師ごとに1行、質問ごとに列が可能な値(0(選択されていない)、1(選択されている))を持つリストにフォーマットしたいと思います。(プログラミング言語の)擬似コードでは、
おそらく次のようになります。

iterate list {
    data [teacher_id] [question_id] = 0
}

サンプルデータと意図した結果は次のとおりです。

a <- data.frame(
    Case_ID = c(1,1,2,2,4,4),
    Q_ID    = c(3,5,5,8,2,6)
)   

意図した結果は

res <- data.frame(
    Case_ID = c(1,2,4),
    Q_1    = c(0,0,0),
    Q_2    = c(0,0,1),
    Q_3    = c(1,0,0),
    Q_4    = c(0,0,0),
    Q_5    = c(1,1,0),
    Q_6    = c(0,0,1),
    Q_7    = c(0,0,0),
    Q_8    = c(0,1,0)
)

どんな助けでも大歓迎です。

Tnx Hed

4

2 に答える 2

2

を返し、インデックスをmatrix使用して作業を行います。matrix

m <- matrix(0, nrow=3, ncol=8)
rownames(m) <- c(1,2,4)
colnames(m) <- 1:8
idx <-apply(a, 2, as.character)
m[idx] <- 1

m
##   1 2 3 4 5 6 7 8
## 1 0 0 1 0 1 0 0 0
## 2 0 0 0 0 1 0 0 1
## 4 0 1 0 0 0 1 0 0
于 2013-02-24T20:34:12.083 に答える
0

a「マスター配列」内のどのセルがであるかを参照するインデシーのリストと考えることができることに注意してくださいTRUE。次に、マスターマトリックス、たとえばresすべて0'のsがある場合、次のように伝えることができますR。「で参照されるすべての要素は次のようにaなります1」これは以下で行われます。

まず、「マスターマトリックス」を作成します

# identify the unique teacher ID's
teacherIDs <- unique(a$Case_ID)

# count how many teachers there are
numbTeachers <- length(teacherIDs)

# create the column names for the questions
colNames <- c(paste0("Q_", 1:50))

# dim names for matrix.  Using T_id for the row names
dnames <- list(paste0("T_", teacherIDs), 
              colNames)
# create the matrix
res2 <- matrix(0, ncol=50, nrow=numbTeachers, dimnames=dnames)

次に、aを一連のインデックスに変換します。
*以下の最初の2行は、存在しない教師IDがある場合にのみ必要であることに注意してください。つまり、あなたの例では、T_3は存在しません*

# create index out of a
indx <- a
indx$Case_ID <- as.numeric(as.factor(indx$Case_ID))
indx <- as.matrix(indx)

# populate those in a with 1
res2[indx] <- 1

res2
于 2013-02-24T20:42:13.753 に答える