再コーディングが他の列のエントリを条件とする、データフレーム内の列エントリを再コーディングするより効率的な方法を探しています。
この簡単な例を見てみましょう。これは、再コード化されたデータの新しい列を作成し、それを文字に変換してから、サブセットの角括弧を使用してデータを再コード化する現在の手順を示しています (この手順の正式な名前はありますか?)。
## example data frame
df = data.frame( id = seq( 1 , 100 , by=1 ) ,
x = rep( c("W", "Z") , each=50),
y = c( rep( c("A","B","C","D") , 25 ) ) )
# add a new column based on column y; convert to character
df$newY = as.character( df$y )
# change newY entries to numbers based on conditions in other columns
df$newY[ df$x == "W" & df$newY == "B" ] <- 1
df$newY[ df$x == "Z" & df$newY == "D" ] <- 3
この手順は、条件の数が少ない変数を再コーディングする場合には問題ありませんが、多数の条件付き引数の場合や、再コーディングする個別の変数が多数ある場合は扱いにくくなります。
これを行うためのより効率的な方法を見つけるのを手伝ってくれる人はいますか?
ありがとう!