2016-10-18 3 views
-2

한 열의 고유 한 값을 기반으로 새 열을 동적으로 만들고 싶습니다. 원본 :R 열의 uniqe 값에서 동적으로 새 열 만들기

id, category 
1, a 
2, b 
3, c 
4, b 

새로운 기능 :

data$categoryA = ifelse(data$category=="a", 1, 0) 
data$categoryB = ifelse(data$category=="b", 1, 0) 
... 

하지만이 같은이 동적으로 뭔가하고 싶은 : 지금은

id, category, a, b, c 
1, a, 1, 0, 0 
2, b, 0, 1, 0 
3, c, 0, 0, 1 
4, b, 0, 1, 0 

내가 할

for(CATEGORY in unique(data$category) { 
    data$CATEGORY = ifelse(data$CATEGORY =="a", 1, 0) 
} 
+3

나는 이런 식으로 적어도 45k 번 요청되었습니다. –

답변

0

나는 다음을 사용한다 :

factor2binary=function(inputvar) 
{ 
    set.l <- unique(inputvar) 
x=(sapply(set.l, function(x) as.numeric(inputvar == x))) 
colnames(x)=unique(inputvar) 
x 
} 


A=sample(LETTERS[1:4],100,rep=T 
factor2binary(A) 

    D A C B 
[1,] 1 0 0 0 
[2,] 1 0 0 0 
[3,] 0 1 0 0 
[4,] 1 0 0 0 
[5,] 0 0 1 0 
[6,] 0 1 0 0 
     ... 
1

우리는 할 수 있습니다 table을 적용하고 012로 변환하십시오. 원본 데이터 세트가있는및 cbind

cbind(df1, as.data.frame.matrix(table(df1))) 
# id category a b c 
#1 1  a 1 0 0 
#2 2  b 0 1 0 
#3 3  c 0 0 1 
#4 4  b 0 1 0 
0

당신이 데이터 프레임에 새로운 변수를 만들 수 data$VARIABLE을 사용하고 있기 때문에 귀하의 제안 코드가 작동하지 않을 수 있습니다 의도 한대로

for(CATEGORY in unique(data$category) { 
    data$CATEGORY = ifelse(data$CATEGORY =="a", 1, 0) 
} 

이이 작동을 사용하는 경우

for(CATEGORY in unique(data$category) { 
    data[[CATEGORY]] = ifelse(data$CATEGORY =="a", 1, 0) 
} 
관련 문제