r - 在旁边总结变量

标签 r dplyr summarize

我正在为我的问题寻找解决方案。我只能通过手动重新排列来解决它。

Example code:

  library(dplyr)

    set.seed(1)
    Data <- data.frame(
      W = sample(1:10),
      X = sample(1:10),
      Y = sample(c("yes", "no"), 10, replace = TRUE),
      Z = sample(c("cat", "dog"), 10, replace = TRUE)
    )        
    #
    summarized <- Data %>% group_by(Z) %>% summarise_if(is.numeric,funs(mean,median),na.rm=T)

print(Data)

enter image description here

我希望输出如下所示,每个函数应用于第一个列,然后每个函数应用于第二个列,依此类推。我的代码反之亦然。

当然我可以重新排列列,但这不是数据科学的目的。我有数百个列,想应用多个函数。

这就是我想要的:

summarized <- summarized[,c(1,2,4,3,5)] #best solution yet

enter image description here

有没有我遗漏的论点?我敢打赌有一个简单的解决方案或其他功能可以完成这项工作。 伙计们,提前谢谢!

最佳答案

一个选择是使用足够的 select_helpers 进行后处理

library(dplyr)
summarized %>% 
    select(Z, starts_with('W'), everything())
# A tibble: 2 x 5
#  Z     W_mean W_median X_mean X_median
#  <fct>  <dbl>    <dbl>  <dbl>    <dbl>
#1 cat     5.25      5.5   3.75      3.5
#2 dog     5.67      5.5   6.67      7  

如果有 100 列,一种方法是获取列名的子字符串,并排序

library(stringr)
summarized %>% 
         select(Z, order(str_remove(names(.), "_.*")))
# A tibble: 2 x 5
#  Z     W_mean W_median X_mean X_median
#  <fct>  <dbl>    <dbl>  <dbl>    <dbl>
#1 cat     5.25      5.5   3.75      3.5
#2 dog     5.67      5.5   6.67      7  

关于r - 在旁边总结变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59251881/

相关文章:

r - 查找组内计数的平均值

r - 使用带有 dplyr 的向量汇总列

R 枢轴示例

r - 合并列,根据其他df更新列,填充NA

r - 从 R Shiny 的 selectInput 中过滤

r - dplyr : Trying to access the elements of a vector stored in a column using an exterior variable as index

r - R中跨多个列的简洁子集

r - 应用group_by和summarise(sum),但保留具有不相关冲突数据的列?

r - ggplot2 中标签文本条目中的不同字体和大小

r - 使用 R 绘制分类数据