在dplyr中为自动列名称选择分隔符

时间:2018-05-24 14:56:23

标签: r dplyr tidyverse

当我使用summarise_if函数并传递函数列表时,如何选择不同的下划线而不是下划线?我希望我的列名只包含句点而不是下划线,以便遵循Google样式指南R。

这就是我用来创建列的内容:

wthmon %<>% summarise_if(is.numeric, funs(min, max, mean, median), na.rm = TRUE)

我的专栏最终看起来像这样:

> names(wthmon)
[1] "exp"               "stat.id"           "year"              "month"            
[5] "temp_min"          "dew_min"           "humid_min"         
"solar_min"        
[9] "rain_min"          "wind.spd_min"      "wind.dir_min"      
"wind.gust_min"    
[13] "soil.temp_min"     "soil.moist_min"    "temp_max"          "dew_max"

但我宁愿temp.min或soil.moist.min与我的风格保持一致。

2 个答案:

答案 0 :(得分:0)

使用gsubiris %>% summarise_if(is.numeric, funs(min, max, mean, median), na.rm = TRUE) %>% rename_all(. %>% gsub("_", ".", .)) %>% colnames()

 [1] "Sepal.Length.min"    "Sepal.Width.min"     "Petal.Length.min"    "Petal.Width.min"    
 [5] "Sepal.Length.max"    "Sepal.Width.max"     "Petal.Length.max"    "Petal.Width.max"    
 [9] "Sepal.Length.mean"   "Sepal.Width.mean"    "Petal.Length.mean"   "Petal.Width.mean"   
[13] "Sepal.Length.median" "Sepal.Width.median"  "Petal.Length.median" "Petal.Width.median" 

输出:

{{1}}

答案 1 :(得分:0)

2020更新

在dplyr 1.0.0中使用summarise()和cross(),您现在可以指定.names参数

  iris %>%
  summarise(across(
    where(is.numeric),
    list(min = min, max = max, mean = mean, median = median),
    na.rm = TRUE,
    .names = "{.col}.{.fn}"
  ))