改进数据集中的变量名称

机器算法验证 项目管理
2022-03-16 23:55:18

好的变量名是:

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-score。

非常感谢任何一般或具体的想法或资源。请参阅此存储库以获取我的一些代码以及带有变量名称列表的描述性统计信息。我在此处简要描述了共享此代码的原因,并此处进行了一些宣传,但是最后两个链接与变量命名约定问题并不真正相关。 补充:我对此进行了轻微的编辑,主要只是移动了一个段落,以避免评论中明显的一些混乱。感谢您的想法!

添加于 2016 年 9 月 5 日:值得注意的是Hadley Wickham 的 R 样式指南Google 的 R 样式指南... Hadley 说:

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

谷歌说:

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

3个回答

对这个问题最好的回答是回避它。从根本上说,变量的短名称是什么并不重要,只要它们在某个地方的密码本中有很好的记录即可。唉,由于 R 没有用于此的本地资源,人们往往不会打扰。(对我来说,缺乏是该语言作为统计工具的最大失败)。

有各种 R 包提供这种机器,例如Hmisc您使用的和memisc. 但实际上最好的选择是将整个东西变成一个 R 包。这样,处理后的数据可以成为一个对象,并带有相应的帮助页面,该页面描述了现在所有内容的名称,并可以在应得的地方分配信用。该软件包还可以公开原始数据和您的处理功能,以供人们查看您为制作最终产品所做的工作。

另外,一个建议:如果您可以提供帮助,请不要在最终数据对象中包含变量及其 z 评分版本等派生数据,只需提供生成它的函数即可。从数据管理的角度来看,派生数据只是麻烦。

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

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

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

一般来说,我建议让变量名更长,而不是坚持一些复杂的缩写方案。talk.prob.m.sum代替 的错别字很容易talk.prob.sum.ms出现,统计分析中的错误很难发现和追溯。(有点相关:我在一些博客上读到的一句好话是写你的变量名,比如斯堪的纳维亚语 - SickHouseToothHealer而不是医院牙医。)

最后一点:标准化、居中等通常在数据清理之后完成。如果没有清理,那么也许考虑把它留给分析数据的人。或者,如果您自己也进行清洁,请指出您已采取的所有步骤 - 后续分析和解释可能很大程度上取决于此。