이 될 것 시도한 변환을위한 간단한 솔루션 : 당신은 그냥 숫자 수준에 문자열 수준으로 요소를 변환 할 경우
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을 사용 239,먼저 숫자 수준 요인의 뒤쪽으로, 숫자로 변환 :
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"
가'X, Y에 대한 예를 제공하십시오, –
을 z' y'가 계산'당신은'$의 y'를 사용할 수 없으며, 리터럴 이름 "y"대신에 값을 사용하려고합니다. 대신'x [[y]] <- ...'를 사용하십시오 (마치'if' 문에서했던 것처럼). – JDL
@JDL 여전히 동일한 오류가 발생합니다 – New2015