社区首页 >问答首页 >按组变量排列不工作的grouped_df

按组变量排列不工作的grouped_df
EN

Stack Overflow用户
提问于 2014-10-24 11:54:47
回答 2查看 31.4K关注 0票数 32

我有一个data.frame,其中包含客户名称、年份和每年的几个收入数字。

代码语言:javascript
代码运行次数:0
复制
df <- data.frame(client = rep(c("Client A","Client B", "Client C"),3), 
                 year = rep(c(2014,2013,2012), each=3), 
                 rev = rep(c(10,20,30),3)
                )

我想最终得到一个按客户和年度汇总收入的data.frame。然后,我想按年对data.frame进行排序,然后按收入下降进行排序。

代码语言:javascript
代码运行次数:0
复制
library(dplyr)
df1 <- df %>% 
        group_by(client, year) %>%
        summarise(tot = sum(rev)) %>%
        arrange(year, desc(tot))

但是,当使用上面的代码时,arrange()函数根本不会改变分组data.frame的顺序。当我运行下面的代码并强制使用一个普通的data.frame时,它可以工作。

代码语言:javascript
代码运行次数:0
复制
   library(dplyr)
    df1 <- df %>% 
            group_by(client, year) %>%
            summarise(tot = sum(rev)) %>%
            data.frame() %>%
            arrange(year, desc(tot))

我是遗漏了什么,还是每次尝试通过分组变量arrange grouped_df时都需要这样做?

版本: 3.1.1 dplyr包版本: 0.3.0.2

编辑11/13/2017:如丙二酮所指出的,从dplyr0.5开始,在排序时再一次安排忽略组。因此,我的原始代码现在按照我最初预期的方式工作。

OR排表()再次忽略分组,返回到dplyr 0.3及更高版本的行为。这使得安排()与其他dplyr动词不一致,但我认为这种行为通常更有用。无论如何,它不会再次改变,因为更多的变化只会造成更多的混乱。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-24 12:04:16

尝试切换group_by语句的顺序:

代码语言:javascript
代码运行次数:0
复制
df %>% 
  group_by(year, client) %>%
  summarise(tot = sum(rev)) %>%
  arrange(year, desc(tot))

我认为arrange是在组内排序;在summarize之后,最后一个组被删除,所以这意味着在您的第一个示例中,它是在client组中排列行。将订单切换到group_by(year, client)似乎可以修复它,因为client组在summarize之后会被删除。

另外,还有ungroup()函数

代码语言:javascript
代码运行次数:0
复制
df %>% 
  group_by(client, year) %>%
  summarise(tot = sum(rev)) %>%
  ungroup() %>%
  arrange(year, desc(tot))

编辑,@lucacerone:,因为dplyr 0.5,这不再起作用了:

破坏更改OR排表()再次忽略分组,返回到dplyr 0.3和更高版本的行为。这使得安排()与其他dplyr动词不一致,但我认为这种行为通常更有用。无论如何,它不会再次改变,因为更多的变化只会造成更多的混乱。

票数 68
EN

Stack Overflow用户

发布于 2018-09-28 08:28:17

dplyr的最新版本(至少来自dplyr_0.7.4)允许在组内使用arrange。您刚才已经设置好了arrange()调用.by_group = TRUE。在您的示例中有更多可用的这里信息,请尝试:

代码语言:javascript
代码运行次数:0
复制
library(dplyr)
df %>% 
        group_by(client, year) %>%
        summarise(tot = sum(rev)) %>%
        arrange(desc(tot), .by_group = TRUE)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26555297

复制
相关文章
不按标准引发的bug
我们曾经在初级和中级培训中给大家详细讲解了Modbus通讯的开发,并多次强调了一定要按照标准协议的要求编写Modbus驱动程序,可是现实中仍然有很多工程师不按照标准,导致通讯中会出现bug,最近也有猿友微我说他的Modbus通信中有bug。经过详细沟通,知道他在帧完成检测和帧间字节检测时候没有严格按照标准。 小猿曾经在嵌入式培训中多次强调告诫大家Modbus通讯中帧完成检测,也就是我们常说的t3.5个字节的帧中断完成检测,和t1.5的字节间检测。在标准协议中明确要求,我们在来温习一下,希望大家牢记这段,因
用户1605515
2018/04/11
7220
不按标准引发的bug
警惕不规范的变量命名
就在最近,项目组开始强调开发规范了,今天分享一个变量名命名不规范的小案例,强调一下规范的重要性。 Boolean变量名命名规范 16年底,阿里公开了《Java开发规范手册》,其中有一条便是“布尔类型不能以is为前缀”。规范中没有举出例子,但是给出了原因:会导致部分序列化框架的无法解析。 看看错误的示范,会导致什么问题,以Spring中的jdbcTemplate来进行实验。 定义实体类 @Entity public class Bar { @Id @GeneratedValue pr
kirito-moe
2018/04/27
2K0
RDP你的凭据不工作/RDP密码不刷新
如果你不属于上述的情况,请查看:https://learn.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/troubleshoot/rdp-error-general-troubleshooting#check-whether-a-group-policy-object-gpo-is-blocking-rdp-on-a-local-computer
阿龙w
2022/12/02
12.7K0
RDP你的凭据不工作/RDP密码不刷新
Windows凭据不工作
如果不是敲错IP、用户名、密码,报凭据不工作,一般情况下执行这几句命令后重启远程服务就正常了
Windows技术交流
2021/06/15
6.1K0
工作组,域
一,工作组概念 在一个大的单位内,可能有成百上千台计算机互相连接组成局域网,它们都会列在“网络”(网上邻居)内。如果这些计算机不分组,情况会有多么混乱是可想而知的——很难找一台计算机。为了解决这一问题,就有了工作组(Work Group)这个概念。将不同的计算机按功能(或部门)分别列入不同的工作组中,如技术部的计算机都列入“技术部”工作组中,行政部的计算机都列入“行政部”工作组中。要想访问某个部门的资源,只要在“网络”里找到那个部门的工作组名并双击,就可以看到那个部门的所有计算机了。 二,域 域(Domain)是一个有安全边界的计算机集合(安全边界的意思是:在两个域中,一个域中的用户无法访问另一个域中的资源),可以简单地把域理解成升级版的工作组。相比工作组而言, 域有更加严格的安全管理控制机制。要想访问域内的资源,用户必须通过合法的身份登录域,而用户对该域内的资源拥有什么样的权限,还取决于他在该域内的身份。 域控制器(Domain Controller,DC)是一个域中的一台类似管理服务器的计算机,我们可以形象地将它理解为一个单位的门卫。域控制器负责每一台联入的计算机和用户的验证工作。域内第 1 章 内网渗透测试基础 3计算机如果想互相访问,首先都要经过域控制器的审核。 1.单域 在一般的具有固定地理位置的小公司里,建立一个域就可以满足所需。一般在一个域内要建立至少两个域服务器,一个作为 DC,另一个作为备份 DC。如果没有备份 DC,那么一旦 DC 瘫 痪了,域内的其他用户就不能登录该域了,因为活动目录的数据库(包括用户的账号信息)是存储在 DC 中的。如果有一台备份域控制器(BDC),则至少该域还能正常使用(把瘫痪的 DC 恢复即可)。 2.父域和子域 出于管理及其他需求,需要在网络中划分多个域。第一个域称为父域,各分部的域称为该域的子域。例如,一个大公司的不同分公司位于不同的地理位置,就需要父域及子域这样的结构。如果把不同地理位置的分公司放在同一个域内,那么它们之间信息交互(包括同步、复制等)所花费的时间就会比较长,占用的带宽也会比较大(因为在同一个域内,信息交互的条目是很多的,而且不压缩;而在域和域之间,信息交互的条目相对较少,而且可以压缩)。这样处理还有一个好处,就是子公司可以通过自己的域来管理自己的资源。还有一种情况,就是出于安全策略的考虑(每个域都有自己独有的安全策略)。例如,一个公司的财务部门希望能使用特定的安全策略(包括账号密码策略等),那么可以将财务部门作为一个子域来单独管理。 3.域树 域树(Tree)指若干个域通过建立信任关系而组成的集合。一个域管理员只能管理本域的内部,不能访问或者管理其他域,两个域之间相互访问则需要建立信任关系(Trust Relation)。信任关系是连接不同域的桥梁。域树内的父域与子域之间不但可以按照需要相互进行管理,还可以跨网分配文件和打印机等设备资源,从而在不同的域之间实现网络资源的共享与管理、通信和数据传输。 在一个域树中,父域可以包含很多个子域。子域是相对父域来说的,是指域名中的每一个段。各子域之间用点号隔开,一个“.”代表一个层次。放在域名最后的子域称为最高级子域或一级域,在它前面的子域称为二级域。例如,域 asia.abc.com 就比域 abc.com 的级别低,因为域 asia.abc.com有两个层次,而域 abc.com 只有一个层次。再如,域 cn.asia.abc.com 比域 asia.abc.com 的级别低。可以看出,子域只能使用父域作为域名的后缀,也就是说,在一个域树中,域的名字是连续的,如图
网e渗透安全部
2020/11/09
8610
工作组,域
词序:神经网络能按正确的顺序排列单词吗?
当学习第二语言时,最困难的挑战之一可能是熟悉单词顺序。词序在机器翻译中也很重要,因为翻译大致上是一种处理目标语言词汇的过程,它与源语言是对等的。也许你已经做过一个把打乱的单词或字母放在原来顺序的游戏。
AiTechYun
2018/03/05
1.1K0
词序:神经网络能按正确的顺序排列单词吗?
python r不转义变量
普通字符串常量 含有转义字符,会按照转义字符的意义输出,如下: text="1 E:/Code/PycharmProjects/QtDemo/ToolsList\__pycache__\start.cpython-36.pyc \r\n" print(text) 输出如下: 1 E:/Code/PycharmProjects/QtDemo/ToolsList__pycache__\start.cpython-36.pyc <空行> raw strings(原始字字符串) 在python中使用
py3study
2020/01/09
4K0
按字典序打印字符串中字符的所有排列
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
名字是乱打的
2022/05/13
1.4K0
golang刷leetcode:使数组按非递减顺序排列
给你一个下标从 0 开始的整数数组 nums 。在一步操作中,移除所有满足 nums[i - 1] > nums[i] 的 nums[i] ,其中 0 < i < nums.length 。
golangLeetcode
2022/08/02
5500
共享变量工作原理
默认情况下,如果在一个算子的函数中使用到了某个外部的变量,那么这个变量的值会被拷贝到每个task中。此时每个task只能操作自己的那份变量副本。如果多个task想要共享某个变量,那么这种方式是做不到的。
编程那点事
2023/02/25
4790
共享变量工作原理
JavaScript不选中Input直接按数字输入数字
简述 JavaScript不选中编辑框Input按键盘上的数字直接输入到Input 代码 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <tit
xlj
2021/07/14
1.9K0
Harbor社区成立“性能工作组”和“多架构支持工作组”
随着Harbor在企业级业务的应用的快速发展,由Harbor支撑的镜像仓库也在不断的发展壮大,承载了越来越多的用量和更多的使用场景。作为目前最流行的开源镜像仓库解决方案,Harbor的表现很大程度上决定了上层容器应用的发布时延,其整体性能及稳定性,以及在多架构场景下的应用自然备受社区众多用户及开发者的关注。
灵雀云
2021/04/02
7820
webpack的watch选项不工作原因分析
今天尝试将以前创建的一个前端项目改为webpack编译,该项目使用了VueJS v2.0,原来是编写gulp脚本完成构建的。很自然就直接用vue-cli来搞定这个事了。 使用vue-cli创建项目 因为以前用过webpack,而vue-cli创建的项目底层其实还是使用webpack构建的,所以使用起来还是很简单的。 # 使用yarn,这个命令是跟npm兼容的,但速度快很多,而且可以保证依赖包版本的一致性,强烈推荐 yarn install --global vue-cli vue-cli webpack v
jeremyxu
2018/05/10
4.1K0
【说站】mysql组复制的工作原理
1、复制组由多个server成员组成,组中的每个server成员可以独立执行事务。
很酷的站长
2022/11/24
4350
VBA实例一、工作簿按表拆分成多个工作簿
大家好,本节主要介绍,通过VBA程序,将单个工作簿中的多个工作表,按表拆分成多个独立工作簿。
无言之月
2022/11/11
3.8K0
VBA实例一、工作簿按表拆分成多个工作簿
Python中将变量按行写入txt文本中
在'w'写入模式下,当我们下次写入变量时,会覆盖原本txt文件的内容,这肯定不是我们想要的。TXT有一个追加模式'a',可以实现多次写入:
py3study
2020/01/10
7.5K0
Python中将变量按行写入txt文本中
分层抽样不按比例如何加权_按比例分层抽样和定额抽样的区别?
从宏观上,两者的目的都是为了提供更好的样本代表性,并且两者的理论基础都来自于:总体的个体的同质性越高,抽样误差越小,样本的代表性越好。
全栈程序员站长
2022/08/28
1.4K0
R语言之 dplyr 包
这个包以一种统一的规范更高效地处理数据框。dplyr 包里处理数据框的所有函数的第一个参数都是数据框名。
timerring
2023/10/13
4500
R语言之 dplyr 包
mac配置环境变量不生效
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151616.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/25
1.6K0
PQ-实战应用:将单元格内的数字按出现次数多少排列
这个问题如果通过Excel的传统功能或函数来实现,会比较困难,而使用Excel2016的新功能Power Query来解决简单很多,新手都能学会(Excel2010或Excel2013可到微软官方下载相应的插件)。具体操作方法如下:
大海Power
2021/08/30
1K0

相似问题

按组排列变量(dplyr)

22

按组排列

10

Javascript按升序排列不工作

25

dplyr排列不是按组排列

15

按组排列行?

26
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档