【发布时间】:2014-08-26 11:01:46
【问题描述】:
我经常从协作者那里获得数据集中的变量/列命名不一致的数据集。我的首要任务之一是重命名它们,我想要一个完全在 R 中的解决方案。
as.Given <- c("ICUDays","SexCode","MAX_of_MLD","Age.Group")
underscore_lowercase <- c("icu_days", "sex_code", "max_of_mld","age_group")
camelCase <- c("icuDays", "sexCode", "maxOfMld", "ageGroup")
鉴于different opinions about naming conventions 和what was proposed in Python 的精神,有什么方法可以在R 中以用户指定的方式从as.Given 到underscore_lowercase 和/或camelCase?
编辑:Also found this related post in R / regex,尤其是@rengis 的回答。
【问题讨论】:
-
那么,你卡在哪里了?最难的正则表达式已经在python解决方案中给出了。
-
我将通过决定我的约定将全部小写,没有下划线或句点来解决这个问题。这要容易得多,而且您不必担心获取像 icudays 这样的输入数据,这几乎不可能以编程方式转换为其中一种格式。
-
@Roland 将正则表达式转换为 R 中的函数。我不确定如何将
s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)和re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower()转换为 R 语句。 -
@dan1111 我同意 ICUDays 是一个特别棘手的案例,这就是我包含它的原因。 :-) 我最初的想法是构建识别连续大写字母运行的功能,并将连续运行中除最后一个以外的所有字母都设为小写 - 或类似的东西。我非常感谢您对命名的看法,并且在某种程度上同意它更简单,但希望本着发布的链接的精神尝试提供一个更具可读性的解决方案。