2016-09-06 1 views
0

SSN이 유효하지 않은 경우 해당 ID 변수 값으로 SSN 값을 대체하려고합니다. 대신 내가 가지고있는 코드를 인덱스로 대체합니다.ifelse 인수가 변수 값 대신 변수의 인덱스를 반환합니다.

SSN <- data.frame(SSN = c("123-45-6789", "MR1-23-4567", "666786543", "800445678", 
      "45678AB90", "77212345", "987654321", "234-56-7890", "123004567", "000345678"), 
id = c("3005", "3006", "3007", "3008", "3009", "3010", "3011", "3012", "3013", "3014")) 

SSN$SSN <- gsub('-','', SSN$SSN) 
SSN$SSN <- ifelse(grepl('\\d{9}', SSN$SSN), SSN$SSN, SSN$id) 

이이 결과 :

 SSN id 
1 123456789 3005 
2   2 3006 
3 666786543 3007 
4 800445678 3008 
5   5 3009 
6   6 3010 

하지만 내가 필요로하는 것은 이것이다 :

SSN id 
1 123456789 3005 
2  3006 3006 
3 666786543 3007 
4 800445678 3008 
5  3009 3009 
6  3010 3010 

어떤 도움을 크게 감상 할 수있다 여기에 몇 가지 샘플 데이터와 내 코드입니다! 미리 감사드립니다!

+1

'SSN $ id'를 문자 – Sotos

+1

@Sotos로 변환하면 작동합니다. 고맙습니다. – Borderlands54

답변

0

SSN$id의 클래스는 factor입니다. 원하는 출력을 얻으려면 레벨을 가져옵니다. 즉 :

SSN$SSN <- ifelse(grepl('\\d{9}', SSN$SSN), SSN$SSN, levels(SSN$id)) 
관련 문제