0

再コーディングが他の列のエントリを条件とする、データフレーム内の列エントリを再コーディングするより効率的な方法を探しています。

この簡単な例を見てみましょう。これは、再コード化されたデータの新しい列を作成し、それを文字に変換してから、サブセットの角括弧を使用してデータを再コード化する現在の手順を示しています (この手順の正式な名前はありますか?)。

## 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

この手順は、条件の数が少ない変数を再コーディングする場合には問題ありませんが、多数の条件付き引数の場合や、再コーディングする個別の変数が多数ある場合は扱いにくくなります。

これを行うためのより効率的な方法を見つけるのを手伝ってくれる人はいますか?

ありがとう!

4

1 に答える 1

1

これに対するいくつかのアプローチ:

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)))

# Take the product (my preference)
as.numeric(df$x) * as.numeric(df$y)

# Create new factor based on x and y and convert to numeric
as.numeric(as.factor(paste0(df$x, df$y)))
于 2016-02-24T10:48:03.200 に答える