データセット内の変数名の改善


11

適切な変数名は次のとおりです。

a)短い/入力しやすい、

b)覚えやすい

c)理解可能/伝達的。

忘れ物はありますか?一貫性は探すべきものです。私が言うには、一貫した命名規則が上記の品質に貢献しているということです。一貫性は、(b)思い出しやすさと(c)理解しやすさに貢献しますが、多くの場合、他の要因がより重要です。(a)名前の長さ/入力のしやすさ(たとえば、すべて小文字)と(c)理解しやすさの間には明確なトレードオフがあります。

何千人もの人々がデータを使用しており、多くの人が私のコードを使用しデータを準備し、いくつかのタイプの分析を容易にすることを期待しています。青年期の健康に関する縦断的研究のデータは、複数のデータセットに分類されます。私の最初のステップは、最も一般的に使用されるデータセットの227変数を取得し、それらを再コード化して、より意味のある名前を付けることでした。元の変数名は、「aid2」、「age」、「male.is」に名前を変更した「aid」、「s1」、「s2」のようなものです。他のデータセットには他の何千もの変数があり、研究者の目標に応じてマージされる場合があります。

変数の名前を変更している限り、それらをできるだけ使いやすくしたいと思います。これが私が検討した問題のいくつかです。これまでのところ、小文字のみを使用し、ダッシュやアンダースコアの使用は避けており、ピリオドは非常に特定の目的でのみ使用しています。これには、単純さと一貫性という長所があるため、ほとんどの変数で問題は発生しません。しかし、物事がより複雑になるにつれて、私は一貫性を壊したくなります。たとえば、変数「talkprobmsum」を例にとると、「talkProbMSum」または「talk.prob.m.sum」として読む方が簡単ですが、大文字またはピリオドを使用して単語を区切る場合は、すべての変数に対してそれを行うべきではありませんか?

一部の変数は複数回記録されます。たとえば、レース変数なので、.isまたは.ihを追加して、それらが学校内または家庭内のアンケートに由来するかどうかを示します。しかし、確かにまだ気づいていない繰り返しがいくつかあります。データセットへの参照をすべての変数の名前に追加する方が良いでしょうか?

多くの変数をグループ化して標準化する必要があります。これは、.zmsを追加して、男性別および学校別のZスコアを意味します。

一般的または特定の考えやリソースは大歓迎です。私のコードの一部、および変数名のリストを含む記述統計については、このリポジトリを参照してください。私の簡単には、このコードを共有するための理由を説明し、ここで、それが少し公表された、ここで、これらの最後の2つのリンクが変数の命名規則の問題には本当に関係ありません。 追加:コメントで明らかな混乱を避けようと、これを軽く編集しました。考えてくれてありがとう!

2016年9月5日追加:注目に値するそのハドレーウィッカムのRスタイルガイドGoogleのRスタイルガイドを ...ハドレー氏は述べています:

変数名と関数名は小文字にする必要があります。名前内の単語を区切るには、アンダースコア(_)を使用します。

グーグルは言う:

識別子にアンダースコア(_)またはハイフン(-)を使用しないでください。識別子には、次の規則に従って名前を付ける必要があります。変数名の推奨形式は、すべて小文字とドットで区切られた単語(variable.name)ですが、variableNameも受け入れられます。関数名には最初の大文字があり、ドットはありません(FunctionName)。定数は関数のように名前が付けられますが、最初はkです。


+1は、研究者間で共有するパブリックリポジトリを設定するためのものですが、この質問は実際にはスタックオーバーフローに属しています。
nico

6
なぜこの質問はSO、@ nicoの方が優れているのでしょうか?私にとっては、プログラミングやについてRではなく、データを文書化して使用するための適切な実践についてのようです。
whuber

4
@whuber:私はあなたの要点を理解します。ただし、「変数をどのように呼び出す必要がありますか?」 SOよりも実際のデータを使用するもの。
nico

2
+1、これは素晴らしい質問だと思います。これを行うための称賛
-モニカの復活

2
これは開いたままにしておくべきだと思います。
ガン-モニカの復活

回答:


4

この質問に対する最良の応答は、それをダックすることです。基本的に、変数の短い名前がコードブックのどこかに適切に文書化されている限り、変数の短い名前は何であってもかまいません。残念ながら、Rにはこのためのネイティブリソースがないため、人々は気にしない傾向があります。(私にとって、この不足は、統計ツールとしての言語の最大の失敗の1つです)。

この機構を提供するさまざまなRパッケージがあります。たとえばHmisc、使用しますmemisc。しかし、本当に最良のオプションは、全体をRパッケージにすることです。このようにして、処理されたデータは、すべてが今何と呼ばれるかを説明する対応するヘルプページを持つオブジェクトになり、それが原因となる場所にクレジットを割り当てることができます。パッケージは、最終製品を作成するためにユーザーが何をしたかを見るために、生データと処理関数を公開することもできます。

また、提案:変数などの派生データやZスコアバージョンを最終データオブジェクトに含めないでください。できる場合は、代わりに関数を提供してください。導出されたデータは、データ管理の観点から見ると問題です。


十分に文書化されている限り、変数名は重要ではないとあなたは言っています...私はモグラの丘から山を作りたくありませんが、それらはある程度重要だと思います。覚えにくい、または入力しにくい変数名は、研究者の時間にかなりのコストがかかります。特に、同じ変数名が1000人の研究者によって使用されている場合。ただし、他のポインタをありがとう:)
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.