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

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

将一个R对象转化为data.table,R可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,将行名存在"rn"行中,keep.rownames...比如此例取出DT 中 X 列为"a"的行,和"a"进行merge。on参数的第一列必须是DT的第一列 DT[...., by=x][order(x)] #和上面一样,采取data.table的链接符合表达式 DT[v>1, sum(y), by=v] #对v列进行分组后,取各组中v>1的行出来,各组分别对定义的行中的...(y=max(y)), lapply(.SD, min)), by=x, .SDcols=y:v] #对DT取y:v之间的列,按x分组,输出max(y),对y到v之间的列每列求最小值输出。...with 默认是TRUE,列名能够当作变量使用,即x相当于DT$"x",当是FALSE时,列名仅仅作为字符串,可以用传统data.frame方法并且返回data.table,x[, cols, with

5.9K20

R练习50题 - 第二期

习题 3 每天每个交易所上涨、下跌的股票各有多少? 分析: 这题和Ex-2非常类似,唯一的不同就是分组变量多了一个:对于每个交易日,我们不仅需要根据涨跌updown分组,还要根据交易所分组。...练习 4 沪深300成分股中,每天上涨、下跌的股票各有多少? 分析: 本题仍旧是Ex-2的拓展,只不过要求我们进行行选择操作。在data.table的dt[i,j,by]语法中,i代表行选择操作。...index_w300是一个数值变量,与零进行比较运算后会生成一列与原向量等长的布尔向量(例如 c(True, False False, True...))。...data.table只会选择为True的那些元素。 在data.table的dt[i, j, by]语法中,先执行行选择操作i, 再执行分组操作by, 最后执行列操作j。...习题 7 每天涨幅超过5%、跌幅超过5%的股票各有多少? 分析: 这一题的关键思路还是Ex-2中的分组。首先,我们自然要对日期分组,然后按照updown进行分组。

88820
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    R语言︱数据集分组 大型数据集通常是高度结构化的,结构使得我们可以按不同的方式分组,有时候我们需要关注单个组的数据片断,有时需要聚合不同组内的信息,并相互比较。...介绍一种按照日期范围——例如按照周、月、季度或者年——对其进行分组的超简便处理方式:R语言的cut()函数。...2.aggregate函数不能对分组后的数据进行多种汇总计算,因此要用两句代码分别实现sum和max算法,最后再用cbind拼合。显然,上述代码在性能和易用性上存在不足。...(iris$setosa)] #按照照setosa的大小,重排Sepal.Length数据列 四、dplyr与data.table data.table可是比dplyr以及python中的...(参考来源:R高效数据处理包dplyr和data.table,你选哪个?) ?

    20.9K32

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

    R语言︱数据集分组、筛选(plit – apply – combine模式、dplyr、data.table) 同时,data.table与data.frame数据呈现方面,还有有所不同的。...="Hospice"] (3)还有一些复杂结构: dt[a=='B' & c2>3, b:=100] #其他结构 在dt数据集中,筛选a变量等于"B",c2变量大于3,同时将添加b变量,数值等于...setkey(try,gender,buy_online) #设置key为两个变量,数据已经按照x值进行了重新排序 ans2 分组,然后计算v变量的和、最小值、最大值。 (2)dplyr函数利用%>%(链式操作)来改进: 链式操作是啥意思呢?...,他包含了各个分组,除了by中的变量的所有元素。.

    9.3K43

    R练习50题 - 第一期

    例如股票600128,如果它一共有100天的观测,那么我们会出现100个重复结果。为了去重,我们需要借助于data.table中的unique函数。 我们希望最终的输出是一个字符串向量: ?...unique:找出symbol中不重复的值。 在data.table的语法中,先进行列选择操作,再对列进行处理。所以上述语句会先执行str_detect,再执行unique。...这是因为data.table的第一个语句用来对列进行选择,由于我们这里需要对所有列进行统计,所以不需要进行任何操作。 keyby用来进行分组,是整个代码的核心。先来看keyby = ....(date, updown)这个结构,他的意思是,把整个数据集按照date和updown两个变量进行分组,并依次排序。...其中,updown是我们新建的字符变量,用来表示分组,它只取两个值:UP, DOWN。这其中的难点是建立updown这个变量。我们使用了ifelse这个函数。

    2.5K40

    R语言学习笔记之——数据处理神器data.table

    data.table 1、I/O性能: data.table的被推崇的重要原因就是他的IO吞吐性能在R语言诸多包中首屈一指,这里以一个1.6G多的2015年纽约自行车出行数据集为例来检验其性能到底如何,...(carrier,tailnum)] #但心里要清楚列索引接受的条件是含有列表的列表,而且这里的列表作为变量给出,而非data.frame时代的字符串向量。 行列同时索引毫无压力。...注意以上新建列时,如果只有一列,列名比较自由,写成字符串或者变量都可以,但是新建多列,必须严格按照左侧列名为字符串向量,右侧为列表的模式,当然你也可以使用第二种写法。...当整列和聚合的单值同时输出时,可以支持自动补齐操作。 当聚合函数与data.table中的分组参数一起使用时,data.table的真正威力才逐渐显露。 mydata[,....以上语法加入了新的参数.SDcols和.SD,咋一看摸不着头脑,其实是在按照carrier,origin,dest三个维度分组的基础上,对每个子块特定列进行均值运算。

    3.6K80

    R练习50题 - 第六期

    首先根据date和industry进行分组,而后在分组的.SD中选择每天成交额超过该行业中股票成交额80%分位数的股票:.SD[amount > quantile(amount, 0.8)],这样就将每日每个行业中超过本行业...line 2 生成一个变量tag,首先以日期date进行分组,而后以quantile(amount, 0.9)和quantile(amount, 0.1)为两个标识,生成三个观测值max10%、min10%...line 4 在删除tag = "other"的这些观测之后,用dcast将表进行变形,把观测值max10%和min10%变成两个变量名,而后在这两个变量名下填充ret_aver的观测值:dcast(....line 5 计算max10%和min10%这两个变量的相关系数。因为在变量名中出现的%,会在函数中自动识别为函数%,如果需要讲变量名进行引用,则需要运用引用符号``这个函数。...注:此处作者在进行解答时,特意应用了max10%和min10%两个变量名,仅为了说明``的用法,大家在一般编写过程中则需尽量避免变量名与函数的混用!! ?

    55650

    一行代码对日期插值

    问 题引入 对日期进行插值是一项非常常见的任务。很多时候我们手头的时间序列都是不完整的,当中总会因为这样那样的原因漏了几天的观测,例如股票停牌了,观测仪器坏了,值班工人生病了等等。...附:生成样例数据集的文件: # sample dataset # id变量用于分组 dt data.table(id = c(1, 1, 1, 2, 2), date = c(as.Date("2000...在merge的过程中,我们指定id和date变量必须匹配,也即on = .(id, date)语句的作用: # 把CJ函数merge回原始数据集 dt[CJ, on = ....例如,在我们的样例数据集sample中,id=1的观测对应的日期最小值的为01-08,最大值为01-14,而我们希望填充这两个日期“之间”的所有值。...处女座无数次为了给数据集取一个合适的名字心力交瘁…… 下 期预告 根据官网公告,Microsoft R Open 3.4版本将会“coming soon in May”,大猫会在第一时间给大家发布号外~

    1.4K30

    harmony包整合多批次单细胞数据以去除批次效应(batch effect)

    RunHarmony函数中主要参数: group.by.vars: 参数类型:字符向量(character vector) 描述:该参数用于指定按照哪些变量对数据进行分组,以便进行整合。...示例:如果数据集包含批次信息和其他变量,可以将批次信息放在一个变量中,并将该变量传递给group.by.vars参数,以便根据批次信息对数据进行整合。...max.iter.harmony: 参数类型:数值型(numeric) 描述:设置Harmony算法的最大迭代次数。默认值为10。 示例:如果您希望算法运行更多或更少的迭代次数,可以调整此参数的值。...theta: 参数类型:数值型(numeric) 描述:Diversity clustering penalty parameter。为group.by.vars中的每个变量指定。默认theta=2。...较大的sigma值导致细胞被分配到更多的聚类中,而较小的sigma值使软k均值聚类接近于硬聚类。 示例:根据您的数据和聚类需求,可以调整sigma的值以获得不同的聚类效果。

    6.2K11

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

    接「R」数据操作(一)和「R」数据操作(二) 使用data.table包操作数据 data.table包提供了一个加强版的data.frame,它运行效率极高,而且能够处理适合内存的大数据集,它使用[]...对数据进行分组汇总 by是data.table中另一个重要参数(即方括号内的第3个参数),它可以将数据按照by值进行分组,并对分组计算第2个参数。...2 分组的变量可以不止一个,例如由type和class确定一个分组: product_info[, .N, by = ....下面的例子中,首先使用通用键id将product_info和product_tests连接起来,然后筛选已发布的产品,再按type和class进行分组,最后计算每组的quality和durability...中,by所对应的组合中的值是唯一的,虽然实现了目标,但结果中没有设置键: key(type_class_test0) #> NULL 这种情况下,我们可以使用keyby来确保结果的data.table自动将

    6.4K20

    笔记 GWAS 操作流程6-2:手动计算GWAS分析中的GLM和Logistic模型

    # 表型数据 2.3 使用R中的lm函数做回归分析 1,首先载入软件包data.table 2,然后读取0-1-2编码的c.raw文件 3,然后读取表型数据文件phe.txt 4,然后将表型数据和基因型数据合并...# 表型数据,默认是1-2编码(case-control) 3.3 使用R中的glm函数做Logistic回归分析 1,首先载入软件包data.table 2,然后读取0-1-2编码的c.raw文件 3...:2.0000 「用rs3131972_A这个位点做Logistic回归分析`」 「注意:R中glm模型,Logistic需要Y变量为0-1分布,而我们的表型数据为1-2,所以讲表型数据减去1」...「注意:」 ❝plink中,默认输出的不是Effect,而是OR值,R语言中如果要输出OR值,可以用exp(coef(m1))将结果打印出来。...根红苗正的GWAS分析软件:GEMMA 笔记 | GWAS 操作流程5-2:利用GEMMA软件进行LMM+PCA+协变量 笔记 | GWAS 操作流程6-1:为何有些SNP效应值大却不显著?

    2.8K32

    用data.table语句批量处理变量

    问 题:批量处理表中变量 正式开始说问题之前,我们先回顾一下data.table的基本语句DT[i, j, by],简而言之,"i"是对行进行选择,"j"是对列进行操作,"by"是分组。...直 观处理法:分别处理每一个变量 大家最直观的处理方法,肯定是把每一个变量写在j中然后分别进行日期格式的修改,诸如如下形式: DT[, ':='(`除权除息日\r\n[报告期] 2010一季` = as.Date...批 量处理法:用lapply批量处理变量 在此时lapply的妙用就显现出来了,在R中lapply用来对list中每一个element进行相同处理,如何把它运用到data.table,话不多说先上代码:...如何把处理好的这些变量与变量名进行对应,这里就用到了colnames()这个函数,提取出我们这个data.table第3到第34个变量的名字,这样就可以将变量名和更改格式后的变量按顺序进行一一匹配。...下 期预告 下期的大猫R语言课堂还是由村长来进行撰写和推送,届时将会给大家带来一个比较有趣的data.table发现,敬请期待!! ?

    1.2K30

    35行代码搞定事件研究法(下)

    注意 I,本代码主要使用data.table包完成,关于data.table包的相应知识会在涉及的时候进行讲解。在以后的课堂中,我们会重点介绍data.table这个包。...此处,我们没有添加任何条件,因此默认选中event的所有行。 对选中的变量进行操作(第二行代码)。此处,所有的操作都用大括号{}包裹了起来。 对event按照stk.id进行分组(第三行代码)。...do_car() 要求我们提供n, r, rm, date 四个参数,但是向量 ns 只能提供 n 这一个参数的值,因此我们需要用pryr包中的partial() 函数把剩下的几个变量补充完整(感谢pryr...max(1, n - m1) i2 <- n - m2 i3 <- n - c1 i4 <- n + c2 r.model 的变量,vapply(ars, sum)的含义是把超额收益率向量ars中的元素相加,double(1)指定输出的必须是一个标量(因为对于每个事件日

    1.2K40

    R Tricks: 如何处理Gaps & Islands问题?

    (生成样例数据集的代码附在见文末) 解 题思路 在解决本问题的过程中我们需要用到data.table包!...上一行代码中,使用的关键函数是累计最大值函数cummax。此外,由于cummax不能直接处理日期格式,所以需要先将日期转化为数字进行比较,完了再转换回日期。...接下来,我们需要新建一个grp分组变量,它用于将一个个“islands”区分开来——即如果当前行的stime小于etime.max,那么grp的数字不变(意味着观测之间有重叠);但如果stime比etime.max...关于如何巧用cumsum函数,大猫在上一期的《R Tricks:如何巧为分组观测编号》中也有详细讲解哦 最后,我们只要把每个grp组中起始时间(stime)的最小值和结束时间(etime)的最大值找出来就行啦...关于如何巧用cumsum函数,大猫在上一期的《R Tricks:如何巧为分组观测编号》中也有详细讲解哦。 我是大猫,咱们下期见!

    1.1K20

    热图到底是横向基因层面归一化还是依据纵向的样品呢?

    在(Gene Expression Omnibus, GEO)中,可以通过提供的访问号码GSE200033和GSE200226获取这两个数据集的表达量矩阵。...SD值排序后挑选里面的排名靠前的1000个基因后绘制如下所示的热图: SD值排序后挑选里面的排名靠前的1000个基因 很明显的可以看到这个表达量矩阵里面BET蛋白抑制剂iBET处理造成的表达量变化是最大的...,组合起来为一个新的表达矩阵 n=t(scale(t(dat[cg,]))) # 'scale'可以对log-ratio数值进行归一化 n[n>2]=2 n[n< -2]= -2 n[1:4,1:4]...'scale'可以对log-ratio数值进行归一化 n[n>2]=2 n[n< -2]= -2 n[1:4,1:4] pheatmap(n,show_colnames =F,show_rownames...那,什么时候需要依据纵向的样品进行归一化呢?

    6810

    关于data.table中i, j, by都为数字的理解

    在往期的公众号文章,都提到了data.table的主要语句DT[i, j, by], 简而言之,i 用来选择或者排序,by 用来分组,j 用来运用函数进行处理。...以mtcars这个R自带的数据集为例,我们知道mtcars[1]的运行结果,是选择这个数据集的第一行,结果如下: ? mtcars[1,1]的运行结果,是选择第一行第一列的元素,结果如下: ?...问 题解析 为了弄清楚这个问题,我们根据i, j, by运行的顺序:“先i,再by,最后j”,将i, j, by拆解进行分析。...接下来,我们在by的位置加上一个1,代码如下: mtcars[1, .SD, 1] 再来看看运行结果: ? 这时多了一列变量,变量名缺失,且只有一行观测值为数字“1”。...结 果分析 从这样一段拆解当中,我们大致就可以明白为什么会出现这样的结果了,整体的运行思路就是:首先选出了第一行,而后在by中以一个变量名默认为NA的变量为基准,最后在j中生成了一个默认变量名为V1的变量

    1.3K30

    「R」数据操作(一)

    函数是不同的,主要体现在不会将字符串转换为因子变量,当然前者的速度要快得多。...接下来我们正式学习用R内置的函数操作数据框进行分析和统计的一些方法。...,我们利用tapply()函数(apply家族成员)可以进行统计,该函数专门用于处理表格数据,使用某些方法根据某列队另一列的数据进行统计。...[1] "double" class(mean_quality2) #> [1] "matrix" mean_quality2["model", "vehicle"] #> [1] 6 同理我们可以根据多列分组...可以看到数据中存在缺失值,有一种叫末次观测值结转法(LOCF)可以填补缺失值,当非缺失值后面紧跟一个缺失值时,就用该缺失值填补后面的缺失值,直到所有缺失值都被填满。

    1.9K10

    R语言基因组数据分析可能会用到的data.table函数整理

    版权声明:本文为博主原创文章,转载请注明出处 R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快。...因此,在对大数据处理上,使用data.table无疑具有极高的效率。这里主要介绍在基因组数据分析中可能会用到的函数。...,默认Windows是"\r\n",其它的是"\n"; na,na 值的表示,默认""; dec 小数点的表示,默认"...by ]语法做 但是如果我要将上述DT中的v3作为一个影响因素,作为tag,先按v1、v2汇总,再将对应的v4值分为v3=1和v3=2两类,查看v1、v2取值相同v3不同对应v4的情况,这个时候用dcast..."; value.name 融合后数据的数值列名; na.rm 如果TRUE,移除NA值; variable.factor 如果TRUE,变量列转化为因子; verbose

    3.4K10
    领券