r - 总结变量旁边
问题描述
我正在为我的问题寻找解决方案。我只能通过手动重新排列来解决它。
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)
我希望输出如下所示,每个函数应用于第一个 col,然后每个函数应用于第二个 col,依此类推。我的代码反之亦然。
当然我可以重新排列列,但这不是数据科学的意义所在。我有数百个 cols 并且想要应用多个功能。
这就是我要的:
summarized <- summarized[,c(1,2,4,3,5)] #best solution yet
有什么我缺少的论点吗?我敢打赌,有一个简单的解决方案或其他功能可以完成这项工作。伙计们,提前谢谢!
解决方案
一种选择是使用足够的后处理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
推荐阅读
- python - 更改python plotly px图中的线宽
- arrays - 将数据从多个数组导出到 CSV 文件
- c# - c# 如何使用 EPPlus 创建 Excel 范围而不是表格
- ios - 在 iOS 中集成 Snapchat“Snap Kit”登录工具包
- java - Spring boot commandlinerunner 未提交事务
- python - 如何处理从 Python 中的请求库中获取的 JSON 数据?
- python - 多个组的 Python 散点图,x 轴为列,y 轴为值
- sql-server - 需要帮助在 Microsoft SQL Server 2016 上为基于 Web 的搜索工具构建索引
- c++ - 在多个池上拆分线程
- android - 如何观察在初始化/构造函数期间未初始化的 ViewModel 的 LiveData(房间挂起功能)