いくつかのサンプル データ:
ID S1Qual S2Qual S3Qual S1 S2 S3
1 1 0 1 7 8 7
2 1 1 1 6 6 8
3 0 1 1 7 8 8
...
S1Qual、S2Qual、S3Qual は、それぞれ S1PS、S2PS、S3PS の品質を表します。もし[n, S1Qual] == 1
、私は保持したいです[n, S1PS]
。なら[n,S1Qual] == 0
、設定したい[n,S1PS] == NA
。
次のコードがあります。
n <- 1
while (n <= number.of.rows) {
if (data$S1Qual[n] == 0) {data$S1[n] <- NA}
if (data$S2Qual[n] == 0) {data$S2[n] <- NA}
if (data$S3Qual[n] == 0) {data$S3[n] <- NA}
n <- n+1
}
これは私が望んでいたことですが、より効率的で簡潔な方法があることを望んでいました (実際のデータフレームには、これらの S/SQual ペアが 3 つ以上あります)。周りを検索するifelse()
とapply()
、 と にたどり着きました。どちらも近いように見えますが、間違っていると考えていない限り、私が望むものにはあまり適していません。
何か案は?