汇总多个变量并分配给新的变量名称

Pin*_*ong 1 r dplyr

我正在使用 'across' 函数来获取一系列变量的汇总统计信息(例如,所有以 'f_' 开头的变量。由于 across 函数会将汇总结果存储回原始变量名称,因此具有多个 cross具有不同汇总函数的函数会覆盖结果(如下所示)。我可以想到一种解决方法,方法是在 summarise() 后重命名变量并 cbind 结果单个表。但是,这看起来很麻烦,我想知道是否有是将一系列汇总结果存储到新变量名称的一种整洁(双关语)方式。

var_stats = data %>% 
  summarise(
    across(starts_with('f_'), max, na.rm = T),
    across(starts_with('f_'), min, na.rm = T)
  )
Run Code Online (Sandbox Code Playgroud)

Len*_*nyy 6

通过 cross,您可以同时使用多个汇总函数并控制变量的名称。下面的例子对你有帮助吗?

mtcars %>% 
  summarise(across(starts_with("c"), list(custom_min = min, custom_max = max), .names = "{.col}_{.fn}"))

  cyl_custom_min cyl_custom_max carb_custom_min carb_custom_max
1              4              8               1               8
Run Code Online (Sandbox Code Playgroud)