【发布时间】:2020-06-26 12:29:01
【问题描述】:
我正在尝试使用 R 中 janitor 包中的 make_clean_names 函数清理字符列。在这种情况下,我需要保留重复项,而不是向其添加数字。这可能吗?我的代码是这样的
x <- c(' x y z', 'xyz', 'x123x', 'xy()','xyz','xyz')
janitor::make_clean_names(x)
[1] "x_y_z" "xyz" "x123x" "xy" "xyz_2" "xyz_3"
janitor::make_clean_names(x, unique_sep = '.')
[1] "x_y_z" "xyz" "x123x" "xy" "xyz.1" "xyz.2"
janitor::make_clean_names(x, unique_sep = NULL)
[1] "x_y_z" "xyz" "x123x" "xy" "xyz_2" "xyz_3"
使用unique_sep = NULL 似乎不起作用。还有其他保持唯一值的方法吗?
期望的输出:
[1] "x_y_z" "xyz" "x123x" "xy" "xyz" "xyz"
我知道如何使用正则表达式来做到这一点。只是在寻找捷径。
PS:我知道创建此函数是为了清除 data.frame 的名称,我正在尝试将其应用于不同的用例。此功能可能有助于清理字符列。
【问题讨论】:
-
很难用相同的变量名进行任何分析。例如,如果你做了
mean(df$xyz)R 会选择哪一列?在大多数操作中,如果这些是数据框中的列,它将抛出错误。我建议不要这样做。 -
正如我所提到的,我正在尝试清理字符列。我没有用来清理数据框的列名。
-
只是试图将功能重新用于其他用例