2013-12-20 6 views
2

나는 형태의 여러 가지 변수가 : 나는 STATA로 복사 붙여 넣은 데이터가숫자가 아닌 값을 포함하는 문자열을 숫자 값으로 변환하는 방법은 무엇입니까?

1 gdppercap 
2 19786,97 
3 20713,737 
4 20793,163 
5 23070,398 
6 5639,175 

, 그리고 그들이 문자열 생각한다.

destring gdppercap, generate(gdppercap_n) 

을하지만, 얻을

gdppercap contains nonnumeric characters; no generate 

: 그리고 지금까지 나는 시도

encode gdppercap, gen(gdppercap_n) 

을하지만 상관없이 이전 값의 1055 1의 숫자가 변수를 얻을.

gen gdppercap_n = real(gdppercap) 

을하지만, 얻을 :

또한 내가 해봤 날

(1052 missing values generated) 

도와 드릴까요? 제가 말할 수있는 한, Stata는 변수가 분수를 포함한다는 사실을 좋아하지 않습니다.

답변

0

for 루프를 사용하여 쉼표를 마침표로 변환 할 수 있습니다. 나는 당신의 변수를 잘 모르지만 변수가 1234,343 인 변수 gdppercap을 가지고 있고 destring을하기 전에 1234.343이되기를 원한다고 상상해보십시오. 예를 들어

: 내가 제대로 이해하면

forvalues x = 1(1)10 { 
    replace gdppercap = substr(gdppercap, 1, `x'-1) + "." + substr(gdppercap, `x'+1, .)  
    if substr(gdppercap, `x', 1) == "," 
} 
+0

'gdppercap = subinstr (gdppercap, ",", ".", 1)을 바꾸면 루프가 불필요합니다. 그러나 그것은 필요하지 않습니다. 'destring'은'dpcomma' 옵션을 가지고 있습니다. –

1

은 문자열로 해석 일 가능성이 두 가지 사실에서 발생 :

  1. 변수 이름은 최초의 관찰에 에코 할 수있다. 그렇다면 텍스트이고 수치 변수와 일치하지 않습니다. 근본적인 문제는 너무 많이 복사 한 복사하여 붙여 넣기 작업 일 가능성이 큽니다. Stata는 일반적으로 복사 한 첫 번째 행을 변수 이름 또는 데이터로 취급할지 여부를 복사하여 붙여 넣기로 가져올 때 선택 항목을 제공하며 열 머리글이 변수 이름이 될 수 있도록 첫 번째 선택이 필요합니다. 데이터. 돌아가서 복사하여 붙여 넣기를 올바르게 수행하는 것이 가장 좋습니다. 그러나 Stata는 스프레드 시트의 여러 헤더 행에 어려움을 겪을 수 있습니다. 또는 복사하여 붙여 넣기가 아닌 import excel을 사용하십시오. 또는, 일관되게 불필요한 경우, 첫 번째 관찰을 제거하기 위해 drop in 1.

  2. 쉼표는 소수 자릿수를 나타냅니다. destring은 쉽게이 문제에 대처할 수 있습니다. dpcomma 옵션에 대한 도움말을 참조하십시오. Stata는 분수에 반대하지 않습니다. 그것은 어리 석다. 문제는 쉼표 사용에 플래그를 지정해야한다는 것입니다.

    • destring 그래서 real()이 라운드 방법이 아니다, real()에 대한 래퍼입니다

참고.

  • encode은 진정한 범주 형 변수를 정수로 매핑하는 데 도움을줍니다. 데이터 입력 오류를 수정하는 것이 아닙니다.

  • 관련 문제