Различные случаи имени переменной после добавления - PullRequest
0 голосов
/ 04 декабря 2018

Я добавил несколько файлов в один набор данных sSata.Теперь у него 335 имена переменных.Некоторые имена переменных имеют проблемы с регистром, такие как almirah и ALMIRAH, хранящие одну и ту же информацию из разных наборов данных.

Я заменяю эти переменные, подобные этой, одной:

count if mi(almirah)
local first=r(N)

count if mi(ALMIRAH)
local sec=r(N)

if first<sec {
    replace almirah=ALMIRAH if mi(almirah)
}
else {

}

Как сделатьЯ запрограммировал это для всех переменных, которые по сути являются одной и той же переменной, но имеют проблемы верхнего и нижнего регистра, подобные этой?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Из вашего описания, я думаю, что хорошим выбором для вас является снижение всех имен переменных перед добавлением данных.Если это предположение верно, приведенный ниже код может дать вам подсказку.

clear
save output, emptyok replace

foreach file in file1 file2 file3 file4 {
    use `file', clear
    ren *, lower
    append using output
    save output, replace
}
0 голосов
/ 04 декабря 2018

Предположим, у вас есть frog toad newt и FROG TOAD NEWT.Давайте решим, что переменная с именем в нижнем регистре является окончательной.Таким образом, цикл с некоторым или всем этим может быть полезным.

foreach v in frog toad newt { 
    local V = upper("`v'") 
    generate `v'2 = cond(missing(`v'), `V', `v') 
    display  
}

Я создал новую переменную там, потому что могут быть другие проблемы.Если они есть, перезапись ваших данных может затенить их.

Примечание: в вашем сегменте кода вам нужно как минимум

 if `first' < `sec'

, чтобы сделать его легальным, поскольку ссылки на first и sec будут интерпретироваться как ссылки на переменные или скаляры в противном случае,Но на самом деле непонятно, почему количество пропущенных значений вообще существенно.Если у меня есть 42 наблюдения, то append 66 больше, результат должен быть таким же, как и наоборот.

...