2013-01-08 3 views
0

나는 Notif 열이 관련되지 않을 수 있기 때문입니다, 내가 어떻게 표시되지 않습니다합니다 (Component 컬럼으로 분류 된 data.frame과 내가 그것을

df <- data.frame(Equip = c(1,1,1,1,1,2,2,2,2,2), 
       Notif = c(1,1,1,5,5,3,3,3,3,4), 
       Component = c("1","1","1","2","2","1","2","2","2","3")) 

을 할당하는 방법을 적용 그 열을 만드는 방법에 대해 갔다) 이제

I이 해당 카테고리에 Notif 값을 매핑 테이블 :.

example <- 1 "repair" ; 3 "service" ; 4 "other" ; 5 "service" 

는 어떻게 만들 수 있습니다 그리고 내 data.frame에 Category 벡터를 추가 하시겠습니까?

+1

관련 기술에 관한 질문을 보내주십시오. –

+0

나는 정말로 관련이 있을지 모르지만, 나는 그것으로 작업해야하기 때문에 태그를 붙인다. – Daniel

답변

2

한 가지 방법은 Category에 매핑 Notif에 대한 명명 된 벡터를 사용하는 것입니다

categories <- c(`1` = "repair", `3` = "service", `4` = "other", `5` = "service") 

은 그럼 당신은 할 수 있습니다 :

df$Category <- categories[as.character(df$Notif)] 

또는 동등

df <- transform(df, Category = categories[as.character(Notif)]) 

를 두 경우 모두, 출력은

입니다. 10
df 
# Equip Notif Component Category 
# 1  1  1   1 repair 
# 2  1  1   1 repair 
# 3  1  1   1 repair 
# 4  1  5   2 service 
# 5  1  5   2 service 
# 6  2  3   1 service 
# 7  2  3   2 service 
# 8  2  3   2 service 
# 9  2  3   2 service 
# 10  2  4   3 other 

또 다른 방법은 데이터베이스처럼 data.frames을 병합하는 것입니다 가입 : 나에게 문제가되지 않을 수도 있습니다 출력이 Notif에 의해 재정렬되는 것을

categories <- data.frame(Notif = c(1, 3, 4, 5), 
         Category = c("repair", "service", "other", "service")) 

merge(df, categories, by = "Notif", all.x = TRUE) 
# Notif Equip Component Category 
# 1  1  1   1 repair 
# 2  1  1   1 repair 
# 3  1  1   1 repair 
# 4  3  2   1 service 
# 5  3  2   2 service 
# 6  3  2   2 service 
# 7  3  2   2 service 
# 8  4  2   3 other 
# 9  5  1   2 service 
# 10  5  1   2 service 

참고. 이 접근법은 NotifCategory과 같은 하나 이상의 변수에 매핑 될 때 특히 유용합니다.