RのデータフレームA
のファクターcolumn1
のレベルdf
の名前を変更しようとしています。現在のアプローチは次のとおりです。
levels(df[!is.na(df$column1) & df$column1 == 'A',]) <- 'B'
エラーや警告は発生しませんが、まったく効果がありません。
B
は既存のレベルではないため(試行錯誤の結果、重要だと思われました)、最初の試みである次のレベルも機能しませんでした。
df[!is.na(df$column1) & df$column1 == 'A', 'column1'] <- 'B'
誰かが私を正しいアプローチに導くことができますか?
私は提案するつもりでした
_levels(df$column1)[levels(df$column1)=="A"] <- "B"
_
または、ユーティリティ関数_plyr::revalue
_を使用します。
_library("plyr")
df <- transform(df,
column1=revalue(column1,c("A"="B")))
_
transform()
は必要のない小さな砂糖です。 df$column1 <- revalue(df$column1(...))
を使用できます
完全を期すために、_car::recode
_も機能しますが、_plyr::revalue
_よりも少し不格好です(再コーディングは引用符で囲まれた文字列として指定されているため)。
_car::recode(df$column1,"'A'='B'")
_
1つの方法は、レベルのラベルを変更することです。まず、いくつかのテストデータ
_df <- data.frame(column1=c("A","B","C","A","B"))
_
そして今、「A」を「X」に置き換えます
_levels(df$column1) <- gsub("A","X", levels(df$column1))
_
変更されていることがわかります
_ column1
1 X
2 B
3 C
4 X
5 B
_
gsub()
は正規表現を受け入れるため、注意が必要な場合があります。より具体的な交換は
_gsub("^A$","X", levels(df$column1))
_
「CAB」などの大文字のAではなく、「A」と正確に一致します。