通过传递带有要选择的列名称的有序向量,对 dplyr 中的列进行动态排序

2024-01-19

我使用下面的代码生成一个简单的汇总表:

# Data
data("mtcars")
# Lib
require(dplyr)
# Summary
mt_sum <- mtcars %>%
  group_by(am) %>%
  summarise_each(funs(min, mean, median, max), mpg, cyl) %>%
  mutate(am = as.character(am)) %>%
  left_join(y = as.data.frame(table(mtcars$am),
                              stringsAsFactors = FALSE),
            by = c("am" = "Var1")) 

该代码产生所需的结果:

> head(mt_sum)
Source: local data frame [2 x 10]

     am mpg_min cyl_min mpg_mean cyl_mean mpg_median cyl_median mpg_max cyl_max  Freq
  (chr)   (dbl)   (dbl)    (dbl)    (dbl)      (dbl)      (dbl)   (dbl)   (dbl) (int)
1     0    10.4       4 17.14737 6.947368       17.3          8    24.4       8    19
2     1    15.0       4 24.39231 5.076923       22.8          4    33.9       8    13

但是,我对列的排序方式不满意。我特别想:

  1. 按名称对列进行排序

  2. 通过以下方式实现这一点select() in dplyr

所需订单

所需的顺序如下所示:

> names(mt_sum)[order(names(mt_sum))]
 [1] "am"         "cyl_max"    "cyl_mean"   "cyl_median" "cyl_min"    "Freq"       "mpg_max"   
 [8] "mpg_mean"   "mpg_median" "mpg_min" 

Attempts

理想情况下,我想通过names(mt_sum)[order(names(mt_sum))]对列进行排序的方法select()。但是代码:

mt_sum <- mtcars %>%
  group_by(am) %>%
  summarise_each(funs(min, mean, median, max), mpg, cyl) %>%
  mutate(am = as.character(am)) %>%
  left_join(y = as.data.frame(table(mtcars$am),
                              stringsAsFactors = FALSE),
            by = c("am" = "Var1")) %>%
  select(names(.)[order(names(.))])

将返回预期的错误:

Error: All select() inputs must resolve to integer column positions.
The following do not:
*  names(.)[order(names(.))]

在我的真实数据中,我生成了大量的摘要列。因此我的问题是,如何动态地将排序的列名称传递给select() in dplyr所以它会理解并应用到data.frame在眼前?


我的重点是找出一种将动态生成的列名称传递给select()。我知道我可以对其中的列进行排序base或通过键入名称,如所讨论的here https://stackoverflow.com/questions/5620885/how-does-one-reorder-columns-in-r.


您所需要的只是:

mt_sum %>% select(order(names(.)))
#Source: local data frame [2 x 10]
#
#     am cyl_max cyl_mean cyl_median cyl_min  Freq mpg_max mpg_mean mpg_median mpg_min
#  (chr)   (dbl)    (dbl)      (dbl)   (dbl) (int)   (dbl)    (dbl)      (dbl)   (dbl)
#1     0       8 6.947368          8       4    19    24.4 17.14737       17.3    10.4
#2     1       8 5.076923          4       4    13    33.9 24.39231       22.8    15.0

它有效,因为order根据要求返回整数列位置select.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过传递带有要选择的列名称的有序向量,对 dplyr 中的列进行动态排序 的相关文章

  • 如何在清除排序描述后删除wpf网格排序箭头

    我单击网格标题对列进行排序 然后单击 重置 按钮以通过其集合视图清除排序描述 但排序箭头图标仍然保留在标题中 如何去除它 我在尝试弄清楚如何完全清除网格中的排序时遇到了这个问题 感谢 krishnaaditya 回答如何清除标题中的排序箭头
  • 在 R 中提取 data.frames 列表的名称以及 data.frame 中的值

    在下面的代码中 j是 data frames 的命名列表 我想知道是否有办法 a 提取变量的数值 即one short and one long 在 data frames 内并附加它们的相关名称 即 AAA or BBB or CCC 到
  • 在 RMarkdown 输出到 PDF 时缩进而不添加项目符号点或编号

    之前有人问过如何在没有项目符号的情况下缩进文本 RMarkdown 中的点 但这是针对 HTML 输出的 在 RMarkdown 中缩进而不添加项目符号点或数字 https stackoverflow com questions 47087
  • ggplot:如何限制条形图中的输出,以便仅显示最频繁出现的情况?

    我几个小时以来一直在寻找这个简单的东西 但没有结果 我有一个数据框 其中一列为变量 国家 地区 我想要两件事以下 绘制最常见的国家 地区 最常见的位于顶部 找到部分解决方案EDIT找到完整的解决方案 gt gt 重点问题是根据频率限制条形图
  • 需要在R中跳过不同数量的行

    我正在使用以下代码来处理我的数据 但最近我意识到使用skip 27 在数据开始之前跳过存储在我的文件中的信息 不是一个好的选择 因为每个文件中要跳过的行数不同我的目标是读取存储在多个文件夹中的各种txt文件 并非所有文件都有相同的列数 列的
  • R:如何将字符/数字转为1,NA转为0?

    有没有一种简单的方法可以将列的字符 数字变为 1 将 NA 变为 0 这里有一些示例数据 我想将其应用于 3 4 structure list Item Code c 176L 187L 191L 201L 217L 220L Item x
  • 平滑连续 2D 点

    UPDATE 感谢 user20650和 李哲源Zheyuan Li 这是我想出的解决方案 Example data set df 3600 observations points Create a vector of the cumula
  • 使用数据帧的 R 中的 EWMA 波动性

    我正在尝试从一系列股票每日收益中获取 EWMA 波动性 这些收益来自一个名为base retorno diario Data IBOV ABEV3 AEDU3 ALLL3 BBAS3 BBDC3 BBDC4 1 2000 01 04 0 0
  • Pandas 按唯一列值拆分数据框[重复]

    这个问题在这里已经有答案了 我有一个数据框正在输出到名为 所有数据 的电子表格中 假设此数据包含企业地址 街道 城市 邮政编码 州的列 但是 我还想为包含完全相同的列的每个唯一状态创建一个工作表 我的基本想法是使用迭代每一行df iterr
  • R - 基于列名称的子集

    我的数据框有超过 120 列 变量 我想根据列名称创建子集 例如 我想创建一个子集 其中列名称包含字符串 心情 这可能吗 我一般用 SubData lt myData grep whatIWant colnames myData 我很清楚
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • 使用从两列计算出的键对 CSV 进行排序,获取前 n 个最大值

    这里是 Python 业余爱好者 假设这里我有一个示例 csv 文件的片段 Country Year GDP Population Country1 2002 44545 24352 Country2 2004 14325 75677 Co
  • StatET调试工具

    我想我只是很密集 但我似乎无法弄清楚如何在 Eclipse 中的 R 中使用调试工具 StatET 插件 有人有关于这个主题的任何提示或教程吗 StatET 2 00 现在对高级 可视化调试提供实验性支持 需要 Eclipse 3 6 或
  • 在 R 上安装 TDA 包时出错:目标“diag.o”的配方失败

    使用 Ubuntu 16 04 和 R 3 4 1 安装 R 包 TDA 时收到错误消息 它似乎与制作 CGAL diag cpp 和 或 diag o 最后的完整错误打印输出 有关 我仔细看了这个 在 R 上安装 TDA 包时出错 htt
  • 更改 R 中 ggplot geom_polygon 的颜色方案

    我正在使用地图库和 ggplot 的 geom polygon 创建地图 我只是想将默认的蓝色 红色 紫色配色方案更改为其他颜色 我对 ggplot 非常陌生 所以如果我没有使用正确的数据类型 请原谅 我使用的数据如下所示 gt head
  • 是否有weighted.median()函数?

    我正在寻找类似形式的东西weighted mean 我通过搜索找到了一些解决方案 这些解决方案写出了整个函数 但希望有一些更用户友好的解决方案 以下软件包都有计算加权中位数的函数 aroma light isotone limma cwhm
  • 更改绘图区域背景颜色

    我想使用我们公司的颜色在 R 中制作一个图表 这意味着所有图表的背景应为浅蓝色 但绘图区域应为白色 我正在寻找答案 发现绘制一个矩形就可以完成这项工作 几乎 然而 绘图区域现在是白色的 并且图形不再可见 这可能吗 getSymbols SP
  • 更改ggplot2中的字体

    曾几何时 我改变了我的ggplot2字体使用windowsFonts Times windowsFont TT Times New Roman 现在 我无法摆脱这一切 在尝试设置family in ggplot2 theme 当我用不同的字
  • 斯皮尔曼相关性和联系

    我正在一小组配对排名上计算斯皮尔曼的 rho 斯皮尔曼因处理领带不当而闻名 例如 取2组8个排名 即使两组中有6个是平局 相关性仍然很高 gt cor test c 1 2 3 4 5 6 7 8 c 0 0 0 0 0 0 7 8 met
  • 闪亮井板宽度

    library shiny library shinydashboard ui lt dashboardPage dashboardHeader dashboardSidebar dashboardBody wellPanel tags d

随机推荐

  • conda“源停用”产生错误:参数太多

    我正在尝试通过以下方式测试创建虚拟环境conda create这是我第一次真正涉足虚拟环境 所以我仍在思考如何使用它们 我的第一个测试是 conda create p users me anaconda envs envtest sourc
  • Lodash中的transform和reduce有什么区别

    除了声明 转换是减少的更强大的替代方案 之外 我找不到任何有关差异的文档 lodash中的transform和reduce有什么区别 除了慢 25 http jsperf com transform vs reduce 我喜欢在引入实用程序
  • 强制保存所有浏览器中的文件 - 不在浏览器窗口中打开

    我正在寻找一个适用于所有浏览器的简单解决方案 对于特定文件类型或通过类的目标链接 如何让它们在所有主要浏览器中简单地强制下载 我想我找到了 apache 服务器的完美解决方案 通过将其添加到 htaccess 中 http css tric
  • Python 加载 UTF-8 JSON

    我有以下 JSON 为简单起见 我只使用一个 但实际上有 100 个条目 Active false Book US Derivat London Mike bersax Michael Jealous ExpirationDate 2006
  • 从 Eclipse 工作区 .metadata 签入什么内容

    我一直在对工作区下的项目进行版本控制 但我从未想过应该检查工作区配置本身 到目前为止 我知道我对永远的浮肿完全没有兴趣 log文件 所以我绝对不会签入它 但是 我可以丢弃其他其他子目录或文件吗 应该 lock 尺寸0 被检查了吗 关于 pl
  • 如何使用dockerfile在容器运行时运行.sh文件

    我正在制作一个 dockerfile 来安装 elasticsearch 6 5 4 并向所需位置添加一些文件 并运行名为 test sh 的脚本以在 elasticsearch 运行时在 elasticsearch 中创建新索引 我不确定
  • 如何调试此错误:CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER?

    我的应用程序中出现错误 我不知道如何解决 以前有人见过这个错误 Binary Image Name Address Symbol 0 RepZio 0x002bd302 testflight backtrace 1 RepZio 0x002
  • C# using 语句位于代码页顶部

    几乎所有 C 文件都有using页面顶部的声明 i e using System using System IO code 做什么的using声明意味着位于页面顶部 为什么语法与其他的不同using声明声明 i e using Resour
  • 如何使用硒滚动页面

    我正在使用 FirefoxDriver 网络驱动程序 Firefox 窗口中加载的页面是一个大页面 我想使用 selenium 滚动该页面 我想知道如何做到这一点 如果你想使用selenium webdriver在firefox窗口上滚动
  • 强制QWebView在单独的线程中下载网页内容?

    我如何强制 QWebView 在单独的线程中下载网页和相关内容 你不能轻易 您可以实现自己的 QNetworkAccessManager 请参阅 createRequest 将工作卸载到另一个线程中的 QNetworkAccessManag
  • Angular 6 + Popper.js(无 jQuery)

    我正在尝试设置 Popper js 以使用 Angular 5 无需 bootstrap 或 jquery 我尝试按照这个https github com FezVrasta popper js react vuejs angular an
  • Xcode 4 Cmd+alt+上/下重新映射

    我意识到头文件和实现文件之间的切换已移至 ctrl cmd up down 然而 这非常烦人 因为在我可以用一只手的 3 个手指快速完成之前 箭头键附近没有 Ctrl 按钮 所以我打开首选项发现我可以更改键绑定并尝试按 cmd alt 上
  • 什么时候适合使用引用变量?为什么?您能解释一下实际的语法和位置吗? [复制]

    这个问题在这里已经有答案了 我是 C 的新手 我们最近开始在课堂上探索参考变量 我对它们感到非常困惑 不一定是如何做它们 因为我知道它们会切换变量值 但更多的是沿着为什么开发人员想要做这样的事情 他们完成了什么 它们节省内存吗 他们是否避免
  • 如何在从 v$sql 接收到的 Oracle 查询中查找参数?

    我使用查询 select LAST LOAD TIME ELAPSED TIME MODULE SQL TEXT elasped from v sql WHERE MODULE JDBC Thin Client ORDER BY LAST
  • 将十进制小时转换为小时、分钟和秒

    xslt 1 0 中是否有更优雅的解决方案 我知道 xslt 2 0 有内置函数 我正在获取一个以十进制小时表示的数字 需要将其表示为 HH MM SS 目前我有以下功能正常的
  • 如何使用 VB6 的 Web 服务?

    我需要从 VB6 程序使用外部 Web 服务 如果可能的话 我希望能够在没有 SOAP 工具包的情况下部署我的程序 但这不是必需的 我没有网络服务源 也没有创建它 这是供应商提供的服务 那么 除了 SOAP 工具包之外 使用 VB6 的 W
  • 扩展 MVC3 razor Html.LabelFor 添加 css 类

    我正在尝试将 css 类添加到 EditorTemplate 上的 Html LabelFor Html LabelFor model gt model Name new class myLabel 我的期望例如 label 应该选择 cs
  • BigQuery 写入时数据流作业失败并出现后端错误

    我的工作因最终导入 BigQuery 相关的几个不同错误而失败 我已经运行了 5 次 每次都失败 尽管错误消息有时会有所不同 当我在本地针对 SQLite 数据库运行该工作时 该工作运行良好 因此我认为问题出在 Google 后端 一条错误
  • 使用 SSL 的 wcf net.tcp

    有人有在 WCF 中使用 SSL 和 net tcp 绑定的经验吗 我读过这是可能的 但没有找到有关如何实现它的良好信息 我很想听听任何了解或实施过这一点的人的意见 提前致谢 看看这个链接里的内容 http msdn microsoft c
  • 通过传递带有要选择的列名称的有序向量,对 dplyr 中的列进行动态排序

    我使用下面的代码生成一个简单的汇总表 Data data mtcars Lib require dplyr Summary mt sum lt mtcars gt group by am gt summarise each funs min