問題タブ [r-exams]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - MCQマーキング:「応答」データフレームのベクトルを「回答」要素ごとの行要素と最もよく比較するにはどうすればよいですか?
(R, dplyr) 生徒の MCQ の回答と正解を入力して、点数を計算しようとしています。多くの質問には複数の回答があります。マークシートの回答 ( ms
) と生徒の回答 ( sr
) をデータフレームとして入力しました。列ベクトルはリストです。(更新: 質問のラベルは の行名ですms
。)
sr の各列の行を ms の関連する回答列と比較して見つける最善の方法を試みます: 1. 選択された正解の数と 2. 完全一致かどうか。
個々の要素をlength(intersect(sr[[1,2]], ms[[3,2]]))
コマンドで比較できますが、これをスケールアップする方法がわかりません...反復またはpurr、mutate_atなどを使用します.
回答列を「文字のリスト」再帰ベクトルに変換します: ms$c_ans <- lapply(strsplit(as.character(ms$c_ans),split=','),trimws)
今、私は sr... sr$num_correct1
、sr$num_correct2
などに列を作成して、学生が完全に一致したことを示し、他の列には選択された正解の数を示したいと思います...
例: sr$questions2 の学生の行で、の question2 行にもある要素の数ms$c_ans
。ms[[2,4]]
問題は次の 2 つに分かれると思います。
sr$q1_full <- sr[[2]]==ms[[1,3]]
素敵なブール値のベクトルが得られますが、結果は驚くべきものです (意図したとおりに正しくありません) FALSE FALSE FALSE TRUE
。
length(intersect(sr[[1,2]], ms[[1,3]]))
個々の要素に対して機能しますが、sr[2] などのベクトル全体を ms[[1,3]] と比較するにはどうすればよいですか?