13個の列のいずれかに多数のコードのいずれかが含まれている場合は1、それ以外の場合は0のフラグを作成します。データがデータベースに格納されているため、dplyrを使用する必要があります。私は多くの%inステートメントを使って、私が達成したことを達成することができます。私はこのコードを書くためのより簡潔な方法があるのだろうかと思います。左側に複数の変数を許す%inのバージョンがありますか?複数の%inステートメントを1行のdplyrコードに置き換えてください
次のコードは正しい結果を示します。私は簡潔さのためにわずか5列と2列を含んだ。
library(dplyr)
match_dx <- c(paste0("C0", 0:9), paste0("C", 10:20))
df <- tibble(dx1 = c("C00", "G01"),
dx2 = c("C50", "Z11"),
dx3 = c("D20", "D22"),
dx4 = c("A40", "C21"),
dx13 = c("G20", "C30"))
df %>%
mutate(flag = case_when(
dx1 %in% match_dx ~ 1,
dx2 %in% match_dx ~ 1,
dx3 %in% match_dx ~ 1,
dx4 %in% match_dx ~ 1,
dx13 %in% match_dx ~ 1,
T ~ 0
))
私は
df %>%
mutate(flag = case_when(
any(vars(dx1:dx13) %in% match_dx) ~ 1,
T ~ 0
))
これが作業を行いますが、おそらく似たようなまたは変数ごとに1行を必要とせずにこれを達成する別の方法があるようなものがあるかどうかを知りたいです。
ありがとうございます!
あなたはおそらく '様々な答えをmicrobenchmark'必要があります。私の賭けは「適用」が最も速く、最小のメモリしか使用しない。 – hrbrmstr
すべての答えをありがとう。私はそれらを試しています。私はデータベースのバックエンドを使用しているので、dplyrコードをSQLに変換する必要があることに注意してください。 –
@thelatemailあなたは答えを出しましたか?私はそれを見ない。 – hrbrmstr