私は臨床試験の仕事をしています。私はLabDataというデータフレームを持っています。各被験者について、8回の実験室試験が実施されていたはずである。私はテスト名のベクトルを持っています。私は、各科目について、どのテストが欠けているかを教えてくれる新しいデータフレームを出力しようとしています。私はいくつかのdplyrとブラケット表記法を使用しましたが、これまでの主題を反復する方法と、すべてをクリーンなデータフレームに出力することの最も難しい部分については困惑しました。ここでテスト名のベクトルを使用して、各被験者に欠けているラボテストを確認してください。
は単に被験者が不足しているテストを持っているものを私に言って、
Tests <- data.frame(Tests=c("T1","T2","T3","T4","T5","T6","T7","T8"))
LabData= read.table(text=" Subject Tests
SubjectA T1
SubjectA T2
SubjectA T3
SubjectA T4
SubjectA T6
SubjectA T7
SubjectA T8
SubjectB T2
SubjectB T3
SubjectB T4
SubjectB T5
SubjectB T6
SubjectB T7
SubjectC T1
SubjectC T2
SubjectC T3
SubjectC T4
SubjectC T5
SubjectC T6
SubjectC T7
SubjectC T8
", header=TRUE)
私の理想的な出力はつぎのようになり、サンプルデータのためのコードです。私はそれが最善の方法だろう考え出しとして
Missing <- data.frame(Tests$Tests[!Tests$Tests %in% LabData$Tests])
もtapplyを使用してみました:それは、私はこれらのようなものを試してみましたが、それらのすべて
Subject TestMiss
SubjectA T5
SubjectB T1
SubjectB T8
を反復処理する必要がありますので、ここでも私は100 +科目を持っています各サブジェクトをループしますが、現在のデータがフォーマットされる方法では成功しません。どんな解決策も大変ありがとうございます。
"long"から "wide"形式に変換すると、そこに途中まで来ることができます: 'require(data.table); dcast(LabData、件名〜テスト) 'データが欠けている場所を見つけることができます。 'wide_LabData [、。(missing_trial = which(is.na(.SD)))、by = 'Subject']' – Jealie