Выберите номер телефона из нескольких переменных - PullRequest
1 голос
/ 01 апреля 2019

У меня есть телефонные номера следующей формы, хранящиеся в трех переменных:

(216) 438-9248     16) 438-9248    (216) 438-924  
    (9 9705104   (935) 970-5104            970-5  
(667) 218-1827   (667) 218-1827       (667)-1827  
(795) 653-6687   (795) 653-6687   (795) 653-6687  
(999) 301-5695    (999) 3015695     999 301-5695  
(585) 802-2542    (585) 82-2542     (585) 802-22  

Как я могу выбрать наиболее полный номер телефона в каждом наблюдении?

1 Ответ

1 голос
/ 01 апреля 2019

Вы можете использовать функции length() и cond() для генерации новой переменной wanted с самой длинной записью, сохраненной в каждом наблюдении из всех трех других переменных:

clear
input str15(var1 var2 var3)
"(216) 438-924" "16) 438-9248" "(216) 438-9248"
"(9 9705104" "(935) 970-5104" "970-5"
"(667) 218-1827" "(667) 218-1827" "(667)-1827"
"(795) 653-6687" "(795) 653-6687" "(795) 653-6687"
"(999) 301-5695" "(999) 3015695" "999 301-5695"
"(585) 802-2542" "(585) 82-2542" "(585) 802-22"
end

generate var4 = cond(length(var1) > length(var2), var1, var2)                  
generate wanted = cond(length(var4) > length(var3), var4, var3)
drop var4   

list, separator(0)

     +-------------------------------------------------------------------+
     |           var1             var2             var3           wanted |
     |-------------------------------------------------------------------|
  1. | (216) 438-9248     16) 438-9248    (216) 438-924   (216) 438-9248 |
  2. |     (9 9705104   (935) 970-5104            970-5   (935) 970-5104 |
  3. | (667) 218-1827   (667) 218-1827       (667)-1827   (667) 218-1827 |
  4. | (795) 653-6687   (795) 653-6687   (795) 653-6687   (795) 653-6687 |
  5. | (999) 301-5695    (999) 3015695     999 301-5695   (999) 301-5695 |
  6. | (585) 802-2542    (585) 82-2542     (585) 802-22   (585) 802-2542 |
     +-------------------------------------------------------------------+
...