2016-09-06 48 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))