2017-12-07 28 views
0

Stata에 대한 input 명령에서이 이상한 동작을 발견했습니다.Stata 입력 명령이 로컬 매크로를 허용하지 않음

clear 
local nums 1 1 1 
input a b c 
    `nums' 
end 


clear 
local num 1 
input a b c 
    1 1 `num' 
end 
:

'`' cannot be read as a number

여기 같은 오류를 줄 두 가지 예 : 인수로 어느 하나 개의 변수 또는 다수에 대한 로컬 매크로를 전달할 때

input 명령이 오류를 범

매크로를 input 명령에 전달할 수 있습니까?

+0

흥미로운 아이디어와 내가 전에 보지 못했던 아이디어. 유감스럽게도 유감스럽게도 Stata의 문서 ([U] 18)는 매크로가 "Stata의 모든 위치"에서 사용될 수 있다고 주장하지만, 머리카락을 쪼개지 말고 ​​입력 명령에 입력 된 정보가 Stata가 아닌 데이터라고 주장하지 않는 한 자신의 주장을 과장했습니다 따라서 Stata에서 "in"이 아닙니다. 입력 데이터에서 매크로를 사용하여 수행하려는 작업이 다른 방법으로도 수행 될 수 있다고 생각됩니다. –

답변

1

이것은 입력 명령 자체에 매크로를 전달하지 않지만 원하는 결과를 얻을 수 있으므로 수행하려는 작업에 도움이 될 수 있습니까?

일반적인 생각은 변수의 값을 로컬로 설정 한 다음 로컬 (Excel의 텍스트 - 열 단추와 비슷 함)을 분할하는 것입니다.

clear 
local nums "1 1 1" 
foreach n of local nums { 
    if "`nums_2'" == "" local nums_2 "`n'" 
    else local nums_2 = "`nums_2'/`n'" 
} 

set obs 1 
gen a = "`nums_2'" 
split a, parse("/") gen(b) destring 
drop a 
+0

내 대답은 비슷한 주제에 대한 리프입니다. –

1

이것은 사실상 Aaron Wolf에 대한 답변에 대한 설명이지만 실제 코드에 맞추기에는 너무 어색합니다. 현지에서 물건을 감안할 때

는 그것을 할 수있는 또 다른 방법은 세 가지 변수에 1 일 1을 얻을 수있는 여러 가지 방법이 있습니다, 당연히

clear 
local num "1 1 1" 
set obs 1 

foreach v in a b c { 
    gettoken this num : num 
    gen `v' = `this' 
} 

입니다.