2014-03-01 3 views
0

저는 매우 단순해야하는 작업에 많은 시간을 보내고 있습니다. 나는 같은 이름을 가지지 만 결국 다른 글자로 변수 그룹을 변경하려고합니다. 나는 배열이 어떻게 작동하는지 이해하지 못한다 : 아마 Stata에 익숙하지 않은 것처럼 여러 구문이 내 구문에 잘못되었다. 나는 몇 시간 동안 인터넷 검색을 해왔으며 이것을 이해할 수 없으며 한동안 컴퓨터에서 벗어날 필요가있다.변수 그룹 이름 바꾸기 및 접미사 연결시 여러 오류가 발생했습니다.

local letters `" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" "' 
local i 1 
local swap " " 

foreach var of varlist q5_a-q5_o { 
    local letter : word `i' of `letters' //select the 1st value in the array which is 'a' 
    replace `swap' = "aspects" + "_" + `letter' //change swap to read 'aspects_a' 
    rename `var' `swap' //rename 'q5_a' to 'aspects_a' 
    local `i' = `i' + 1 //add one to 'i' so that the next loop will change 'q5_b' to 'aspects_b' 
} 
+3

일반 설명 : 인터넷 검색은 매우 간접적 일 수 있습니다. 변수의 이름을 바꾸려고합니다. 필요한 모든 것은'이름 변경 '을위한 Stata 도움말 또는 그 근처에 있습니다. 인터넷 검색은 도서관에 걸어 다니는 것과 같습니다. 이미 원하는 책이 있으면 찾아 볼 수 있습니다. –

+0

무슨 뜻인지 알 겠어. 몇 가지 다른 프로그래밍 언어에 대한 경험이 있지만 C++로 솔루션을 찾는 방법은 분명 Stata에서 효과가 없을 것입니다. Stata 도움말을 읽는 데 시간을 할애해야한다고 생각합니다. 여기서 구문은 "내가가는대로 알아내는"것이 시간 낭비와 좌절을 증명하는 것입니다. – jamzsabb

답변

4

@Dimitriy V. Masterov가 지적한 것처럼 rename (Stata 12 up)은 여러 개의 이름을 바꿀 수 있습니다. 실제로

,

renpfix q5 aspect 

당신이 원하는 것을 할 것 같다.

나머지 답변은 귀하의 접근 방식에 무엇이 잘못되었는지에 초점을 맞추고 있습니다. STATA 불법

replace = 

를 볼 수 있도록 귀하의 경우에는, 처음으로 당신은 최대

replace `swap' = 

지역 매크로 swap 단지 공간을 호출합니다. 그러나 replace을 사용하는 전체 아이디어는 여기에 잘못되었습니다. 로컬 매크로를 변경하는 방법이 아닙니다. 즉, 문자열을 조작하는 방법으로 replace을 잘못 읽고 있습니다. 변수의 내용을 변경하는 방법입니다.

local letters `c(alpha)' 
local i = 1 

foreach var of varlist q5_a-q5_o { 
    local letter : word `i' of `letters' 
    rename `var' aspects_`letter' 
    local i = `i' + 1 
} 

. 여기서 우리는 소문자 "a"에서 "z"가 이미 c(alpha)에 있다는 사실을 이용하고 있습니다. 다른 유용한 비트와 조각에 대해서는 creturn list의 출력 끝 부분을 참조하십시오. 이 짧은 만들어 질 수 :

local letters `c(alpha)' 
local i = 1 

foreach var of varlist q5_a-q5_o { 
    local letter : word `i++' of `letters' 
    rename `var' aspects_`letter' 
} 

여전히 짧은 :

local i = 1 

foreach var of varlist q5_a-q5_o { 
    local letter : word `i++' of `c(alpha)' 
    rename `var' aspects_`letter' 
} 

짧은 여전히 ​​

foreach letter in `c(alpha)' { 
    rename q5_`letter' aspect_`letter' 
} 

이전 묵시적으로이 renpfix 어떤 식 으로든 당신을 위해 무엇을하지만.

+0

좋아요! 정말 고마워요. 수업을위한 연구 프로젝트를 위해 Stata를 배우고 있습니다. 한 번에 하나씩 각 변수의 이름을 바꾸는 것보다 쉬운 방법이 있어야한다는 것을 알고있었습니다. 당신의 대답은 훌륭합니다. 그리고 많은 변수 이름을 바꾸기 위해 이것을 사용할 수 있습니다. – jamzsabb

3

그룹 이름 바꾸기 : rename q5* aspects*을 사용해보세요. 이것이 원하는 것이 아니라면, 현재 변수 이름과 원하는 새 이름의 예제를 제공하십시오.

관련 문제