簡単な解決策は次のようになります。
df <- data.frame(Gender = c("male", "male", "female", "male"))
convert <- function(data, var, label){
data[,var] <- ifelse(is.na(data[,var]), NA,
ifelse(data[,var] == label, 1, 2))
return(as.factor(data[,var]))
}
df$Gender <- convert(df, "Gender", "male")
> df
Gender
1 1
2 1
3 2
4 1
あなただけの数値のレベルに文字列レベルであなたの要因を変換したい場合は、あなたにのためにそれを行うには、このシンプルなコマンドを使用することができますあなたが一度に好きな多くの変数:
例データ:
df <- data.frame(var1 = factor(sample(1:5, 10, replace = TRUE), 1:5, labels = LETTERS[1:5]),
var2 = factor(sample(1:5, 10, replace = TRUE), 1:5, labels = LETTERS[6:10]),
var3 = factor(sample(1:5, 10, replace = TRUE), 1:5, labels = LETTERS[11:15]))
> df
var1 var2 var3
1 B F O
2 A F M
3 D F N
4 E F O
5 B H N
6 B F M
7 A F O
8 E I O
9 C J N
10 E J O
今すぐ変更したい列をループにlapply
を使用して、01を使用します最初の数値レベルで考慮に戻った後、数値に変換する:
df[, c("var1", "var2")] <- lapply(df[, c("var1", "var2")], function(x) as.factor(as.numeric(x)))
> df
var1 var2 var3
1 2 1 O
2 1 1 M
3 4 1 N
4 5 1 O
5 2 3 N
6 2 1 M
7 1 1 O
8 5 4 O
9 3 5 N
10 5 5 O
> class(df$var1)
[1] "factor"
y'が計算され、 '場合は、' $ y'を使用することはできません –
'のx、yについての例を提供し、z'してくださいとリテラル名 "y"ではなく、その値を使用します。代わりに 'x [[y]] < - ...'を使ってください( 'if'文のように)。 – JDL
@JDLそれはまだ同じエラーをスローする – New2015