Вывод имени переменной, метки и всех меток значений в одну строку - PullRequest
0 голосов
/ 26 марта 2019

Я хочу перечислить имя переменной, метку, а также все значения и метки значений в одной строке для каждой переменной в наборе данных.

Например:

foreign, Car type, 0 Domestic 1 Foreign

Мне удалось написать некоторый код для этого, но он показывает только метки значений, которые используются в наборе данных:

sysuse auto, clear

foreach var of varlist * {
    local _check: val l `var'
    if `"`_check'"' != "" {
        quietly fre `var'
        di "`var'" char(44) `"`: var label `var' '"' char(44) as result r(lab_valid)
        continue    
        }
    else{
        di "`var'" char(44) `"`: var label `var' '"'    
        continue
        }
}

Здесь команда , предоставленная сообществом *1010* fre будет включать в себя 0 Domestic, только если данные не включают 1 Foreign.

Существуют более простые способы отображения меток значений, но все они отображаются в разных строках.

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Нет необходимости устанавливать и использовать команду от сообщества fre.

Вы можете делать что хотите, используя встроенные расширенные функции макросов:

foreach var of varlist * {
    local _check: value label `var'
    if `"`_check'"' != "" {
        quietly label list `_check'
        local vlabels
        forvalues i = `r(min)' / `r(max)' {
            local vlabels `vlabels' `i' `: label `_check' `i''
        }
        display "`var', " `"`: var label `var' ', "' "`vlabels'"
        continue    
    }
    else {
        display "`var', " `"`: var label `var' '"'    
        continue
    }
}

Используя приведенный выше фрагмент кода для набора игрушек Stata auto, вы получаете:

make, Make and Model
price, Price
mpg, Mileage (mpg)
rep78, Repair Record 1978
headroom, Headroom (in.)
trunk, Trunk space (cu. ft.)
weight, Weight (lbs.)
length, Length (in.)
turn, Turn Circle (ft.) 
displacement, Displacement (cu. in.)
gear_ratio, Gear Ratio
foreign, Car type, 0 Domestic 1 Foreign

Это будет работать, даже если вы опустите уровень в foreign.

Например:

keep if foreign == 1

make, Make and Model
price, Price
mpg, Mileage (mpg)
rep78, Repair Record 1978
headroom, Headroom (in.)
trunk, Trunk space (cu. ft.)
weight, Weight (lbs.)
length, Length (in.)
turn, Turn Circle (ft.) 
displacement, Displacement (cu. in.)
gear_ratio, Gear Ratio
foreign, Car type, 0 Domestic 1 Foreign
0 голосов
/ 26 марта 2019

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

Например:

foreach var of varlist * {  
    local _check: val l `var'
    if `"`_check'"' != "" {
        quietly fre `var', include
        di "`var'" char(44) `"`: var label `var' '"' char(44) as result r(lab_valid)
        continue    
        }
    else{
        di "`var'" char(44) `"`: var label `var' '"'    
        continue
        }
}
...