改善数据集中的变量名


11

好的变量名是:

a)简短/易于输入,

b)容易记住,

c)可以理解/交流。

我忘记了什么吗?一致性是要寻找的东西。我要说的是,一致的命名约定有助于上述质量。一致性有助于(b)容易回忆和(c)易懂性,尽管其他因素通常更重要。在(a)名称长度/键入的难易程度(例如,所有小写字母)和(c)易懂性之间存在明显的权衡。

我在这些问题上投入了相当多的思想,因为成千上万的人正在使用数据,并且希望许多人将使用我的代码来准备数据并促进某些类型的分析。来自青少年健康纵向研究的数据分为多个数据集。我的第一步是将最常用的数据集中的227个变量重新编码,为它们指定更有意义的名称。原始变量名称是诸如“ aid”,“ s1”,“ s2”之类的名称,我将其重命名为“ aid2”,“ age”和“ male.is”。在其他数据集中还有成千上万的其他变量可以根据研究者的目标进行合并。

只要我重命名变量,我就想让它们尽可能有用。这是我考虑过的一些问题。到目前为止,我仅使用小写字母,避免使用任何破折号或下划线,并且仅将句号用于一种非常特定的目的。这具有简单性和一致性的优点,并且对于大多数变量没有任何问题。但是随着事情变得越来越复杂,我很想破坏我的一致性。以我的变量“ talkprobmsum”为例,将其更容易阅读为“ talkProbMSum”或更好的为“ talk.prob.m.sum”,但是如果我要使用大写字母或句点来分隔单词,则我不应该对所有变量都这样做吗?

有些变量会被多次记录,例如种族变量,因此我在其后附加了.is或.ih,以表明它们是来自学校还是家庭问卷。但是肯定有一些我还不知道的重复,将对数据集的引用附加到每个变量的名称上会更好吗?

我需要对许多变量进行分组居中并进行标准化,我这样做的方法是通过附加.zms来表示男性和学校的z分数。

任何一般或特定的想法或资源,将不胜感激。看到我的一些代码以及具有变量名列表的描述性统计信息,见此存储库。我简要描述的原因分享这段代码在这里,它被宣传了一下这里,但最后这两个环节不变量命名惯例的问题确实有关。 补充:我对此内容进行了少量编辑,主要是为了移动段落,以免避免注释中明显的混淆。感谢您的想法!

新增2016-09-05:值得注意的是Hadley Wickham的R风格指南Google的R风格指南 ... Hadley说:

变量和函数名称应小写。使用下划线(_)分隔名称中的单词。

Google说:

请勿在标识符中使用下划线(_)或连字符(-)。标识符应根据以下约定命名。变量名的首选形式是所有小写字母和单词,并用点号(variable.name)分隔,但variableName也被接受;函数名称带有大写字母且没有点(FunctionName);常量的名称类似于函数,但以k开头。


+1建立公共存储库以供研究人员共享,尽管这个问题确实属于Stack Overflow。
nico 2012年

6
为什么这个问题在@nico上会更好呢?在我看来,这似乎与编程无关,甚至与无关R,而是与记录和使用数据的适当做法有关。
whuber

4
@whuber:我明白你的意思。但是,阅读该问题后,我将其视为“我应该如何调用我的变量?”,对我来说,这听起来更像是编程问题,而与统计无关……再想一想,这里的观众也确实更接近将使用实际数据而不是SO的数据。
nico 2012年

2
+1,我觉得这是一个很大的问题:这样做的荣誉
恢复莫妮卡-呱

2
我认为这应该保持开放。
gung-恢复莫妮卡

Answers:


4

对此问题的最佳答案是躲开它。从根本上讲,变量的简称并不重要,只要它们在某个地方的代码本中有充分的记载即可。R,由于R对此没有本地资源,因此人们往往不会去打扰。(对我而言,缺少是该语言作为统计工具的最大失败)。

有多种R软件包可提供此机器,例如Hmisc您使用的和memisc。但是,实际上最好的选择是将整个内容放入R包中。这样,处理后的数据可以成为具有相应帮助页面的对象,该帮助页面描述了现在所说的一切,并可以在到期时分配功劳。该程序包还可以公开原始数据和您的处理功能,以供人们查看您制作最终产品时所做的工作。

还有一个建议:如果可以帮助的话,不要在最终数据对象中完全包含诸如变量及其z评分版本之类的派生数据,而只需提供实现它的函数即可。从数据管理的角度来看,派生数据只是麻烦。


您说变量名只要有据可查就无关紧要...我不想在mole陵上造一座山,但我确实认为它们在某种程度上很重要。难以记住或难以键入的变量名在研究人员手中花费了巨大的成本。尤其是当一千名研究人员使用相同的变量名时。不过,感谢您的其他指点:)
Michael Bishop

4

这是一件小事:我认为使用下划线比使用句点更好。原因是,与R不同,大多数编程语言不支持标识符中使用句点,但几乎所有支持下划线。而且我想您希望您的数据集对不使用R的人有用。


1

首先,感谢您这样做-我相信很多人都会喜欢它,即使没有多少人知道您做到了。

RStudio用户界面不(至少具有默认选项?)不解释变量名称内的任何分隔符。例如,Eclipse将大写部分视为单独的单词,因此您可以使用Ctrl +箭头来快速编辑Java风格的代码,例如ageStandardizedMaleSchool。我无法提出更好的理由来选择一个分隔符而不是另一个分隔符,因此下划线或大写对我来说似乎很好。

通常,我建议使变量名更长,而不是坚持使用一些复杂的缩写方案。容易使错字talk.prob.m.sum而不是talk.prob.sum.ms,也很难发现和跟踪统计分析中的错误。(有点相关:我在某个博客上读过的一个好话是写您的变量名,如斯堪的纳维亚单词-SickHouseToothHealer而不是医院牙医。)

最后一点:标准化,居中等工作通常在数据清理之后进行。如果不进行清洁,则可以考虑将其留给将要分析数据的人员。或者,如果您自己也进行清洁,请指明已执行的所有步骤-后续的分析和解释可能在很大程度上取决于此。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.