@SimonO101 の拡張サンプル データを使用していると仮定すると、expand.grid
とfactor
.
まず、3 つの列の「はい」と「いいえ」の組み合わせをすべて作成します。
facLevs <- expand.grid(c("yes", "no"), c("yes", "no"), c("yes", "no"))
facLevs
# Var1 Var2 Var3
# 1 yes yes yes
# 2 no yes yes
# 3 yes no yes
# 4 no no yes
# 5 yes yes no
# 6 no yes no
# 7 yes no no
# 8 no no no
次に、列の組み合わせを因数分解します。を使用do.call(paste, ...)
すると、 よりも簡単にこれを行うことができますapply(mydf, ...)
。これを変換してas.numeric
、数値グループを取得します。
mydf$pattern <- as.numeric(factor(do.call(paste, mydf[1:3]),
do.call(paste, facLevs)))
mydf
# Visit1 Visit2 Visit3 pattern
# 1 yes no no 7
# 2 yes no yes 3
# 3 yes yes yes 1
# 4 no yes no 6
# 5 yes no yes 3
ご覧のとおり、 は、作成pattern = 7
した の 7 行目にある値に対応していますfacLevs
data.frame
。
便宜上、次のmydf
とおりです。
mydf <- structure(list(Visit1 = c("yes", "yes", "yes", "no", "yes"),
Visit2 = c("no", "no", "yes", "yes", "no"),
Visit3 = c("no", "yes", "yes", "no", "yes")),
.Names = c("Visit1", "Visit2", "Visit3"),
class = "data.frame", row.names = c("1", "2", "3", "4", "5"))