R语言 按组选择前N个最高值
在这篇文章中,我们将看到如何在R语言中按组选择前N个 最高值。
方法1:使用降序法
可以通过order方法将数据帧按组的数值降序排列。然后使用索引方法访问相应的数据框架,以行索引的形式获取order函数的输出。
语法: order(vec, decreasing = TRUE)
参数:
- vec – 要按降序排列的数据框架列名
- decreasing – 将数据按降序排列的标志。
基础R中的Reduce方法也可以用来从数据框架的每一组中选择最高的n行。这个方法的输入是一个有两个参数的函数f,还有一个列表或向量vec,这个列表或向量要用函数f来进行缩减。R中的by()方法是用来将一个函数应用于数据框架的指定子集。这个方法的第一个参数是数据,第二个参数是应用函数的对象,第三个参数是函数。这里,head被用作使用方法调用的第三个参数指定的函数。它被用来指定数据框架中的n行组。
语法: by(df, df$col-name, FUN)
参数:
- df – 要应用函数的数据框架
- FUN – 要应用的函数
组合函数的应用可以总结为以下几点。
代码
输出
方法2:使用dplyr包
R中的dplyr包用于在R中进行突变和数据操作,它对于处理数据帧和数据表特别有用。该软件包可以通过以下命令下载并安装到工作目录中。
在这个包中有一连串的方法,用来从一个数据框架的每组中选择前n行。最初,arrange()方法被调用,以升序或降序的方式排列数据框架的数据。降序是使用desc()方法调用的。在这个方法中作为参数指定的列名被用于排列数据。
随后是group_by方法的应用,该方法将用于分组数据的列名集合作为参数。它可以由一个或多个列组成。
然后使用slice()方法从数据框架中检索出最上面的n行。
输出是以tibble的形式返回的,包含返回的行的全部信息。原始数据框架的行号不会被保留。
代码
输出
方法3:使用data.table包
R语言中的data.table方法被用来以一种良好的组织方式进行数据存储和操作。可以使用以下命令将该包下载并安装到工作目录中。
数据表可以通过order方法按组以其值的降序重新排序。然后使用索引方法访问相应的数据框架,方法是以行索引的形式获取order函数的输出。
语法: order(vec, decreasing = TRUE)
参数 :
Vec – 要按降序排列的数据框架列名
decreasing – 按降序设置数据的标志
然后,可以使用data.table()方法将数据框架转换为数据表,并在setKey()方法中使用列名。key属性包含了在data.table中对数据进行分组的列名。
现在,head和.SD属性可以用来访问每个所取组的前n行。by参数包含了分组的列。head方法的参数是.SD和整数值n。
代码
输出