데이터 세트에서 변수 이름 개선


11

좋은 변수 이름은 다음과 같습니다.

a) 짧고 입력하기 쉬운

b) 기억하기 쉬운

c) 이해할 수 있고 의사 소통.

나는 아무것도 잊고 있습니까? 일관성은 찾아야 할 것입니다. 내가 말한 방법은 일관된 명명 규칙이 위의 품질에 기여한다는 것입니다. 일관성은 (b) 리콜 용이성 및 (c) 이해 가능성에 기여하지만, 다른 요소가 종종 더 중요합니다. (a) 이름 길이 / 입력 용이성 (예 : 모든 소문자)과 (c) 이해 가능성 사이에는 분명한 상충 관계가 있습니다.

수천 명의 사람들이 데이터를 사용하고 있기 때문에 이러한 문제에 대해 약간의 생각을 투자하고 있으며 많은 사람들이 내 코드 를 사용 하여 데이터를 준비하고 일부 유형의 분석을 촉진하기를 바랍니다. 청소년 건강에 대한 종단 연구에서 나온 데이터는 여러 데이터 세트로 분류됩니다. 첫 번째 단계는 가장 일반적으로 사용되는 데이터 세트에서 227 변수를 가져 와서 코딩하고 더 의미있는 이름을 지정하는 것이 었습니다. 원래 변수 이름은 "aid", "s1", "s2"와 같이 이름이 "aid2", "age"및 "male.is"로 바뀌 었습니다. 다른 데이터 세트에는 연구원의 목표가 무엇인지에 따라 병합 될 수있는 수천 개의 다른 변수가 있습니다.

변수 이름을 바꾸는 한 변수를 최대한 유용하게 만들고 싶습니다. 내가 고려한 몇 가지 문제는 다음과 같습니다. 지금까지 소문자 만 사용했으며 대시 또는 밑줄을 사용하지 않았으며 매우 구체적인 목적을 위해 마침표 만 사용했습니다. 이는 단순성과 일관성이라는 장점이 있으며 대부분의 변수에 문제를 일으키지 않습니다. 그러나 상황이 더욱 복잡해지면서 일관성을 깨고 싶은 유혹을 느낍니다. 예를 들어, 변수 "talkprobmsum"을 사용하면 "talkProbMSum"또는 "talk.prob.m.sum"으로 읽는 것이 더 쉬울 것입니다. 그러나 대문자 나 마침표를 사용하여 단어를 구분하려는 경우 모든 변수에 대해 그렇게해서는 안됩니까?

일부 변수는 한 번 이상 기록됩니다. 예를 들어 .is 또는 .ih를 추가하여 학교 또는 가정 설문지에서 온 것인지 여부를 나타냅니다. 그러나 아직 모르는 반복이 있습니다. 모든 변수의 이름에 데이터 세트에 대한 참조를 추가하는 것이 더 좋습니까?

많은 변수를 그룹화하고 표준화해야합니다. 이렇게 한 방법은 남성과 학교별로 z 점수를 의미하는 .zms를 추가하는 것입니다.

일반적이거나 구체적인 생각이나 자료는 대단히 감사합니다. 내 코드 중 일부와 변수 이름 목록이 포함 된 설명 통계는 이 저장소 를 참조하십시오 . 이 코드를 공유하는 이유를 여기 에서 간략하게 설명 했지만 여기 에서 약간 공개 되었지만 마지막 두 링크는 ​​변수 명명 규칙 문제와 관련이 없습니다. 추가 : 나는 주석에서 명백한 혼란을 피하기 위해 주로 단락을 이동하면서 가볍게 편집했습니다. 생각해 주셔서 감사합니다!

2016-09-05 추가 : Hadley Wickham의 R 스타일 가이드Google의 R 스타일 가이드에 주목할 가치가 있습니다 ... Hadley는 말합니다 :

변수 및 함수 이름은 소문자 여야합니다. 밑줄 (_)을 사용하여 이름 내에서 단어를 구분하십시오.

구글은 말한다 :

식별자에 밑줄 (_) 또는 하이픈 (-)을 사용하지 마십시오. 식별자는 다음 규칙에 따라 이름을 지정해야합니다. 변수 이름의 선호되는 형식은 모두 소문자와 점으로 구분 된 단어 (variable.name)이지만 variableName도 허용됩니다. 함수 이름은 초기 대문자를 가지며 점은 없습니다 (FunctionName). 상수는 함수와 같은 이름이지만 초기 k를 갖습니다.


이 질문은 실제로 스택 오버플로에 속하지만 연구원들과 공유 할 공용 저장소를 설정하면 +1입니다.
nico

6
왜이 질문이 더 좋을까요, @nico? 나에게 그것은 프로그래밍이나 정보에 관한 R것이 아니라 데이터를 문서화하고 사용하는 적절한 관행에 관한 것 같습니다.
whuber

4
@ whuber : 당신의 요점을 얻습니다. 그러나 "질문을 어떻게 호출해야합니까?"라는 질문을 읽었을 때 통계에 관한 것이 아니라 프로그래밍 문제처럼 들립니다. SO보다 실제 데이터를 사용할 것입니다.
nico

2
+1, 저는 이것이 훌륭한 질문이라고 생각합니다.
gung-Reinstate Monica

2
나는 이것이 열려 있어야한다고 생각합니다.
gung-Monica Monica 복원

답변:


4

이 질문에 대한 가장 좋은 답변은 그것을 피하는 것입니다. 기본적으로 변수의 짧은 이름이 코드북에 잘 문서화되어 있다면 변수의 짧은 이름이 무엇인지는 중요하지 않습니다. 아아, R은 이것에 대한 기본 자원이 없기 때문에 사람들은 귀찮게하지 않는 경향이 있습니다. (나에게 부족한 것은 통계 도구로서 언어에서 가장 큰 실패입니다.)

이 기계류를 제공하는 다양한 R 패키지가 있습니다 (예 : Hmisc사용하는 기계 및) memisc. 그러나 실제로 가장 좋은 옵션은 모든 것을 R 패키지로 만드는 것입니다. 이렇게하면 처리 된 데이터가 해당 도움말 페이지가 포함 된 객체가 될 수 있으며 이제 모든 것이 호출되는 내용을 설명하고 마감일을 지정합니다. 패키지는 또한 사용자가 최종 제품을 만들기 위해 수행 한 작업을 볼 수 있도록 원시 데이터 및 처리 기능을 노출 할 수 있습니다.

또한 제안 : 변수와 ​​같은 파생 데이터와 z 점수 버전을 최종 데이터 객체에 포함시키지 마십시오. 유용한 경우 대신 함수를 제공하십시오. 파생 된 데이터는 데이터 관리 관점에서 문제가됩니다.


변수 이름이 잘 문서화되어있는 한 변수 이름은 중요하지 않다고 말합니다. 나는 두더지에서 산을 만들고 싶지 않지만 어느 정도 중요하다고 생각합니다. 기억하기 어렵거나 입력하기 어려운 변수 이름은 연구원 시간에 실제 비용이 듭니다. 특히 수천 명의 연구원이 동일한 변수 이름을 사용하는 경우. 그래도 다른 조언을 주셔서 감사합니다 :)
Michael Bishop

4

여기 작은 것이 있습니다. 마침표보다 밑줄을 사용하는 것이 좋습니다. 그 이유는 R과 달리 대부분의 프로그래밍 언어는 식별자의 마침표를 지원하지 않지만 거의 모든 밑줄을 지원하기 때문입니다. R을 사용하지 않는 사람들에게 데이터 세트가 유용하기를 원한다고 가정합니다.


1

우선, 이것을 해 주셔서 감사합니다-많은 사람들이 당신이 해냈다는 것을 알지 못하더라도 많은 사람들이 그것을 인정할 것이라고 확신합니다.

RStudio 사용자 인터페이스는 변수 이름 내의 구분자를 해석하지 않습니다 (적어도 기본 옵션이 있습니까?). 예를 들어, Eclipse는 대문자 부분을 별도의 단어로 취급하므로 Ctrl + 화살표를 사용하여와 같은 Java 스타일 코드를 빠르게 편집 할 수 있습니다 ageStandardizedMaleSchool. 하나의 구분 기호를 다른 구분 기호보다 선호하는 더 좋은 이유를 생각해 낼 수 없으므로 밑줄이나 대문자가 괜찮습니다.

일반적으로 복잡한 약어 체계를 고수하기보다는 변수 이름을 더 길게 만드는 것이 좋습니다. talk.prob.m.sum대신에 오타를 쉽게 만들 수 talk.prob.sum.ms있으며 통계 분석에서 오류를 발견하고 추적하기가 어렵습니다. (일부 관련 : 블로그에서 읽은 좋은 말 은 병원치과 의사 대신 스칸디나비아 단어 -SickHouseToothHealer 와 같은 변수 이름을 쓰는 것 입니다.)

마지막으로, 표준화, 센터링 등은 일반적으로 데이터 정리 후에 수행됩니다. 청소가 없다면 데이터를 분석 할 사람에게 맡기는 것이 좋습니다. 또는 직접 청소를 수행하는 경우 수행 한 모든 단계를 표시하십시오. 후속 분석 및 해석은 그에 따라 크게 달라질 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.