次のデータフレームがあります。
> res5
A B
1 (75,89.3] (4,14.9]
2 (96.4,100] (-Inf,0]
3 <NA> <NA>
4 (0,75] (4,14.9]
5 <NA> <NA>
6 (89.3,96.4] (4,14.9]
> dput(res5)
structure(list(A = structure(c(3L, 5L, NA, 2L, NA, 4L), .Label = c("(-Inf,0]",
"(0,75]", "(75,89.3]", "(89.3,96.4]", "(96.4,100]", "(100, Inf]"
), class = "factor"), B = structure(c(3L, 1L, NA, 3L, NA, 3L), .Label = c("(-Inf,0]",
"(0,4]", "(4,14.9]", "(14.9,68]", "(68, Inf]"), class = "factor")), .Names = c("A",
"B"), row.names = c(NA, 6L), class = "data.frame")
このデータフレームに関数を適用すると、次の結果が得られます。
res6<-lapply (names(res5), function (x){as.numeric(!res5[,x] %in% head(levels(res5[,x]), 2))})
> res6
[[1]]
[1] 1 1 1 0 1 1
[[2]]
[1] 1 0 1 1 1 1
私の関数は、すべての NA 値を「1」としてコーディングしたことを除いて、うまく機能します。関数がそれを実行するのを防ぎ、NA を NA のままにしておくにはどうすればよいですか? ポイントは「NA」をNA(引用符なし)に変換することにあると思われます。試してみました
within (res5 , "NA"==NA)
そしてそれは助けにはなりませんでした。事前にどうもありがとうございました