2015-05-30 7 views
0

Я пытаюсь для конвертирования переменной снабжать струной, тетивой и т.п. A в Stata к строке переменной B таким образом, что каждое наблюдение имеет фиксированную длину. Например, строка переменной АЗавершающие нули в формате строки в Stata

85 
01 
3 

и я хочу, чтобы преобразовать его в другую строку переменной B с замыкающими нулями, чтобы получить длину 5 для каждого наблюдения

85000 
01000 
30000 

Я знаю, что в под заказ ведущие нули этот код действует gen B= string(real(A),"%05.0f"). Как его изменить, чтобы получить завершающие нули?

ответ

1

Проблема в том, что ваша новая переменная не является старой, с новым форматом, но разными значениями в целом. Один из способов:

clear 
set more off 

*----- example data ----- 

input /// 
str2 A 
85 
01 
3 
end 

list 

*------ what you want ----- 

// desired length of string 
local len = 5 

// factor 
gen xdif = 10^(`len' - length(A)) 

// new values with new format 
gen B0 = real(A) * xdif 
gen B = string(B0,"%0`len'.0f") 

list 

Вы можете сделать это одним вкладышем, если хотите.

1

Альтернативный подход, который одинаково хорошо подходит для заполнения строк, содержащих нечисловые значения.

clear 
set more off 

*----- example data ----- 

input /// 
str3 A 
85 
01 
3 
XYZ 
"D F" 
end 

list 

*------ what you want ----- 

// desired length of string 
local len 5 

// desired trailing character 
local pad 0 

// new values 
gen B0 = "`pad'"*`len' 
gen B1 = A+B0 
generate str`len' B3 = B1 

// new values in a single command 
generate str`len' B = A+"`pad'"*`len' 

list 
+0

Последнее решение Уильяма зависит, хотя и непроблемно, от усеченного ввода Stata. То есть, учитывая спецификацию типа хранилища, такую ​​как 'str5' и более длинную строку, это строка, которая усекается, а не спецификация, которая пересматривается« на лету ». –

+0

Более важно, в операторы генерации для B1 и для B я должен был заменить 'A' на' trim (A) '. Необходимость в этом может быть продемонстрирована добавлением «X» к примерным входным данным. По-видимому, короткий ввод обрабатывается по-разному, чем вход с явными конечными пробелами, что путало меня при создании моего примера. –

Смежные вопросы