首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R data.table按组排序,每组底部有"other“

R data.table是一种用于高效处理大型数据集的R包。它提供了一套强大的工具和函数,可以在数据表中进行排序、分组和汇总操作。在R data.table中按组排序,并在每个组的底部添加一个名为"other"的项,可以通过以下步骤完成:

  1. 首先,加载并安装data.table包:install.packages("data.table")library(data.table)
  2. 创建一个数据表对象,假设命名为dt,包含要排序和分组的数据。
  3. 使用setkey()函数将数据表按照分组的列进行排序。例如,如果要按照列A进行排序,则使用setkey(dt, A)
  4. 使用rleid()函数为每个组分配一个唯一的组标识。例如,如果要按照列B进行分组,可以使用dt[, group := rleid(B)]
  5. 使用order()函数对数据表进行排序,首先按照组标识(group)排序,然后按照要排序的列进行排序。例如,如果要按照列C进行排序,可以使用dt <- dt[order(group, C)]
  6. 使用rbind()函数将名为"other"的项添加到每个组的底部。可以使用dt <- rbind(dt, data.table("other"))

完整的代码示例:

代码语言:txt
复制
# 安装并加载data.table包
install.packages("data.table")
library(data.table)

# 创建数据表对象
dt <- data.table(A = c("a", "b", "c", "a", "b", "c"),
                 B = c(1, 2, 1, 2, 1, 2),
                 C = c(5, 3, 7, 2, 4, 6))

# 按照列A进行排序
setkey(dt, A)

# 为每个组分配唯一组标识
dt[, group := rleid(B)]

# 按照组标识和列C进行排序
dt <- dt[order(group, C)]

# 在每个组的底部添加"other"项
dt <- rbind(dt, data.table(A = "other"))

# 打印排序后的数据表
print(dt)

在上述代码中,我们首先按照列A排序,然后使用rleid()函数为每个组分配唯一的组标识。接下来,我们按照组标识和列C排序数据表,并使用rbind()函数将"other"项添加到每个组的底部。最后,我们打印排序后的数据表。

以上是使用R data.table按组排序并在每个组的底部添加"other"的方法。在实际应用中,可以根据具体需求调整排序和分组的列,并根据需要添加其他操作。对于更复杂的数据处理需求,可以深入学习和掌握data.table包的高级功能和函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • R语言︱数据集分组、筛选(plit – apply – combine模式、dplyr、data.table)

    R语言︱数据集分组 大型数据集通常是高度结构化的,结构使得我们可以不同的方式分组,有时候我们需要关注单个的数据片断,有时需要聚合不同组内的信息,并相互比较。...3.aggregate函数对分组字段的顺序一个奇怪的要求:必须反向排列。...在base包里和split功能接近的函数cut(对属性数据分划),strsplit(对字符串分划)以及subset(对向量,矩阵或数据框给定条件取子集)等。...5、which定位函数 功能:返回服从条件的观测所在位置(行数),一定的排序功能在其中。...(参考来源:R高效数据处理包dplyr和data.table,你选哪个?) ?

    20.8K32

    R练习50题 - 第一期

    写在前面 从这期开始,大猫课堂将会推出一个新的系列:R练习50题,目的是使用50道练习题让大家掌握常用的数据操作,例如寻找每组最大的N个观测等。...值得说明的一下几点: 数据集为“面板数据”:包含多个股票(横截面),而每个股票则有多个按照日期排序的变量(时间序列) 股票代码symbol 和日期date共同组成了数据集的key,也即每个唯一的symbol...首先按照题意,我们需要为每个交易日date建立一个“”。其次,对于每个,我们需要生成两个统计数字:一个统计上涨的个数,一个统计下跌的个数。最终结果如下: ?...(date, updown)这个结构,他的意思是,把整个数据集按照date和updown两个变量进行分组,并依次排序。...由于在keyby语句中我们已经按照日期与涨跌进行了分组,所以这一步我们只需要统计每个多少个股票就可以了。我们在这里使用了uniqueN这个函数。

    2.5K40

    数据流编程教程:R语言与DataFrame

    在实际使用中,data.talbe::fread()的读取速度可以比原生的read.csv3-10倍的提升速度。...filter(): 行名称分片 slice(): 行索引分片 mutate(): 在原数据集最后一列追加一些数据集 summarise(): 每组聚合为一个小数量的汇总统计,通常结合gruop_by...()使用 arrange(): 排序 (2)关联表查询 inner_join(x, y): 匹配 x + y left_join(x, y): 所有 x + 匹配 y semi_join(x, y)...DataFrame优化 1. data.table 众所周知,data.frame的几个缺点: (1)大数据集打印缓慢 (2)内部搜索缓慢 (3)语法复杂 (4)缺乏内部的聚合操作 针对这几个问题,data.table...DataFrame可视化 DT包是谢溢辉老师的大作,为data frame数据提供了非常好的可视化功能,并且提供了筛选、分页、排序、搜索等数据查询操作。 九.

    3.9K120

    R练习50题 - 第六期

    本题主要在于理解题意,并利用排序和分组计算。 首先理解题意:计算观测时间内每个行业每天股票的数量,求每个行业股票数量的均值,而后从大到小排序。...接下来以日期date和行业industry进行分组,最后在每组中以amount最大值除以amount最小值:times = amount[1]/amount[.N]。...注:在此处一个data.table的小技巧,i中的排序和选择的操作的在代码中分成了两步,这是因为这两个部分不能够以order(date, industry, -amount) & amount > 0...line 4 在删除tag = "other"的这些观测之后,用dcast将表进行变形,把观测值max10%和min10%变成两个变量名,而后在这两个变量名下填充ret_aver的观测值:dcast(....大猫的微信号是: iRoss2007 村长的微信号及B站主页是: ravin515 http://space.bilibili.com/40771572 大猫的R语言课堂关注R语言、数据挖掘以及经济金融学

    55050

    R」数据操作(三):高效的data.table

    接「R」数据操作(一)和「R」数据操作(二) 使用data.table包操作数据 data.table包提供了一个加强版的data.frame,它运行效率极高,而且能够处理适合内存的大数据集,它使用[]...id name #> 1: T01 SupCar #> 2: M01 JeepX #> 3: M02 AircraftX #> 4: M03 Runner 提供排序索引可以对记录排序...我们可以将多个[]顺序连接起来,形成工作流(类似管道%>%)。...一般data.table会保持原来的顺序返回,有时候我们想要设定排序,keyby也可以实现,所以是一举两得: type_class_test = product_info[product_tests][...下面代码没有聚合数据,而是画了每年的价格图: oldpar = par(mfrow = c(1, 2)) market_data[, { plot(price ~ date, type =

    6.3K20

    R︱高效数据操作——data.table包(实战心得、dplyr对比、key灵活用法、数据合并)

    key变量重新排序。...2、条件行筛选 从前用subset的方式进行筛选比较多, new=14,select=a:f) (1)单变量 现在data.table与dplyr from_dplyr =...—————————————————————————————————————————————— 三、数据排序 了key,其实有了一定排序功能在里面。...(x)] 还有 data$x 如果有很多名字很长的指标,data.table中如果列进行遍历呢? data[,1]是不行的,选中列的方式是用列名。...参考文献: 些许案例,代码参考自以下博客,感谢你们的辛勤: 1、R语言data.table简介 2、超高性能数据处理包data.table 3、R语言data.table速查手册 4、R高效数据处理包

    8.5K43

    R语言数据分析利器data.table包 —— 数据框结构处理精讲

    版权声明:本文为博主原创文章,转载请注明出处     R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快。...将一个R对象转化为data.tableR可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,将行名存在"rn"行中,keep.rownames...data.table为了加快速度,会直接在对象地址修改,因此如果需要就要在修改前copy,直接修改的命令:=添加一列,set系列命令比如下面提到的setattr,setnames,setorder等;...#取第二行 DT[2:3] #取第二到第三行 DT[order(x)] #将DT按照X列排序,简化操作,另外排序也可以setkey(DT,x),出来的DT就已经是按照x列排序的了。...参考文献 data.table包manual:https://cran.r-project.org/web/packages/data.table/data.table.pdf

    5.9K20

    优雅整理Python中的import

    (最后导入自定义模块) 属于同一的导入语句字母顺序排列。 You should put a blank line between each group of imports....(每组导入之间一个空行) isort的作用 使用isort可以自动将Python模块中的import语句进行排序,并自动类型分类,满足以上所说的PEP8规范。...isort 之后: import json # 第一为标准模块 同一字母顺序排序 import os import time # 每组之间空一行 from bs4 import BeautifulSoup...# 第二为第三方模块 同一字母顺序排序 from django.conf import settings from django.core.serializers import json from...同一字母顺序排序 from web.forms.manage_form import ArticleModelForm from web.utils.pagination import Pagination

    1.4K30

    能不能让R行处理数据?

    事实上,这些问题也就是你在“看懂一本R的教材”和“成为R大神”之间的距离。大猫除了进行翻译,也会在其中增加一些相关知识点,相信掌握了这些问题,一定会对你的研究工作大有裨益。 1....这些问题大多数涉及到用data.table包处理数据。data.table是目前R中人气最高的数据处理包。 2....如果要自己寻找Stackoverflow上与R或是data.table相关的问题,可以在搜索栏输入[R] [data.table] Your question。 提 出问题 好啦,开始上课!...首先,假设我一个这样的数据集(暂且命名为t1): ? 现在我想做的是对于每一行,找出非NA的值,填充到“mean.scale”这个新的变量;如果有多个非NA,那么就计算其平均值。...我们只要把数据按照fund_name分组,然后对每组求scale的均值。唯一需要注意的两点。首先,别忘了mean中的na.rm = T参数,它能够让函数忽略缺失值。

    1.4K20

    多个基因集富集结果泡泡图绘制展示

    与单富集结果相比,最大的改动就在: 新增的Group列而非 log_odds_ratio列作为横轴(X-axis)信息 提交后获得结果。图中每个点代表一个富集的条目,在Y轴对应标记。...每一列是一基因的富集结果。三共有的富集在最上面,2共有的富集在中间,每组特有的富集在底部。每个点的大小代表用于分析的基因集中匹配到该通路的基因数目,颜色代表富集程度。...图中每个点代表一个富集的条目,在Y轴对应标记。...这些条目其log_odds_ratio的值排序后展示,log_odds_ratio高的条目在Y轴上方展示;每个点的大小代表用于分析的基因集中匹配到该通路的基因数目,颜色代表富集程度。...点的形状则代表其所属的信息。 但是这个图出现了一个问题,图例显示不全。最简单的解决办法就是把图的宽度和高度调大。 结果就正常了,可以下载PDF版、PPT版(如果选了参数)和对应的R代码

    91810

    和CNS学画图:OR指数比较单细胞亚群的组织偏好

    对单细胞数据进行亚群注释之后,我们往往想比较某亚群,例如CD8Tex,是倾向于分布在实验还是对照,例如癌组织,癌旁组织,转移癌组织,淋巴组织?这时候很多策略去做这种多组间的比较。...Therapy-Induced Evolution of Human Lung Cancer Revealed by Single-Cell RNA Sequencing》这篇Cell的做法,这篇文章三种处理...,它画不出所有样本分布的散点图,因为本质上作者把同一的亚群看成一个样本。...P-values were adjusted using the BH method implemented in the R function p.adjust....图表复现 下面利用作者给的meta.data数据和代码计算OR值: 一些R包需要提前安装一下: library("sscVis") library("data.table") library("grid

    5.5K21

    HDOJ 1716 排列2(next_permutation函数)

    0]<<" "<<list[1]<<" "<<list[2]<<endl; //输出: 1 2 3 例题: Problem B Time Limit : 1000/1000ms (Java/Other...) Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 27 Accepted Submission(s) : 10 Problem...Description Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求从小到大的顺序输出这些4位数。...Input 每组数据占一行,代表四张卡片上的数字(0<=数字<=9),如果四张卡片都是0,则输入结束。...Output 对每组卡片从小到大的顺序输出所有能由这四张卡片组成的4位数,千位数字相同的在同一行,同一行中每个四位数间用空格分隔。每组输出数据间空一行,最后一数据后面没有空行。

    37920
    领券