首页
学习
活动
专区
圈层
工具
发布

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

data.table包提供了一个非常简洁的通用格式:DT[i,j,by],可以理解为:对于数据集DT,选取子集行i,通过by分组计算j。...DT数据集按照x分组,然后计算v变量的和、最小值、最大值。 (2)dplyr函数利用%>%(链式操作)来改进: 链式操作是啥意思呢?...2、on=""方式 DT[X, on="x"] 这里的on指的是DT变量中的变量名称,X还是按照key,如果没设置就会默认第一行为key。...—————————————————————— 实战一:在data.table如何选中列,如何循环提取、操作data.table中的列?...除了行,就是列的问题了。在data.table操作列,真的是费劲。。。 常规来看, data[,.

11.3K43

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

问 题:批量处理表中变量 正式开始说问题之前,我们先回顾一下data.table的基本语句DT[i, j, by],简而言之,"i"是对行进行选择,"j"是对列进行操作,"by"是分组。...我们现在要对列进行操作(转换类型),因此本期是关于“j”的内容。 下面正式开始,笔者在帮他人处理数据时遇到了需要同时为一系列变量进行相同处理,先来看数据结构: ?...首先,变量的数量实在太多,如果输这34个变量名尚且能接受的话,那万一要是有100个变量呢,“输”了你赢了世界又如何;再者,未经过清洗和结构化的变量名存在着太多难以预计的问题,我们来看代码中这个示例的变量名...如何把处理好的这些变量与变量名进行对应,这里就用到了colnames()这个函数,提取出我们这个data.table第3到第34个变量的名字,这样就可以将变量名和更改格式后的变量按顺序进行一一匹配。...注 意事项:.SD用法 可以说.SD是data.table处理中非常重要的一个用法,但也切勿乱用,在这里笔者发现了一个关于.SD的问题,首先我们改一下代码: # 将 := 左边的DT改成.SD ----

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

    懒癌必备-dplyr和data.table让你的数据分析事半功倍

    接下来,我就为大家分享几个我在工作当中最常用来做数据分析用到的包,dplyr和data.table,我保证你get到这两个包后,就再也不想用R里面自带的基础包函数进行数据分析了!!...①第一个参数都是数据集df ②查询条件都是关于如何操作数据集的,在列上面进行操作 ③返回的都是新的数据集,不会改变原始数据集 在介绍下一个包之前,我们先来引入一个dplyr包的综合运用: grouped...使用i DT[3:5] #选取3到5行的数据 class(DT) [1] "data.table" "data.frame" DT[v1=="A"] #基于条件的选择 DT[v1 %in% c("A",..."B")] 使用j DT[,v1] #选择v1列 那如果我要选择多列呢,大家注意一下这里不是用c()来选取了, 而是通过.()来选取,注意前面有一个”.”号,所以我说data.table的语法有点奇怪呢...(sum_v1=sum(v1),sd_v3=sd(v3))] 还可以直接给计算的列赋予名称哦!!功能强大得我都要笑开花了! 使用by 这还只是小试牛刀,你忘了我们还有个by吗!! DT[,.

    3.1K70

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

    因此,在对大数据处理上,使用data.table无疑具有极高的效率。这里我们主要讲的是它对数据框结构的快捷处理。...#取第二行 DT[2:3] #取第二到第三行 DT[order(x)] #将DT按照X列排序,简化操作,另外排序也可以setkey(DT,x),出来的DT就已经是按照x列排序的了。...(sum(y)), by=x] # 对x列进行分组后对各分组y列求总和 DT[, sum(y), keyby=x] #对x列进行分组后对各分组y列求和,并且结果按照x排序 DT[, sum(y)..., by=x][order(x)] #和上面一样,采取data.table的链接符合表达式 DT[v>1, sum(y), by=v] #对v列进行分组后,取各组中v>1的行出来,各组分别对定义的行中的...函数画图,对于每个x的分组画一张图 DT[, m:=mean(v), by=x] #对DT按x列分组,直接在DT上再添加一列m,m的内容是mean(v),直接修改并且不输出到屏幕上 DT[, m:=mean

    7.6K20

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

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

    1.6K30

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

    rm(list=ls()) gc() 2、索引切片聚合 data.table中提供了将行索引、列切片、分组功能于一体的数据处理模型。...data.table列索引 列索引与数据框相比操作体验差异比较大,data.table的列索引摒弃了data.frame时代的向量化参数,而使用list参数进行列索引。...列索引的位置不仅支持列名索引,可以直接支持内建函数操作。 mydata[,.(flight/1000,carrier,tailnum)] 支持直接在列索引位置新建列,赋值符号为:=。...当整列和聚合的单值同时输出时,可以支持自动补齐操作。 当聚合函数与data.table中的分组参数一起使用时,data.table的真正威力才逐渐显露。 mydata[,....数据合并: data.table的数据合并方式非常简洁; DT data.table(x=rep(letters[1:5],each=3), y=runif(15)) DX data.table

    4.3K80

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

    接「R」数据操作(一)和「R」数据操作(二) 使用data.table包操作数据 data.table包提供了一个加强版的data.frame,它运行效率极高,而且能够处理适合内存的大数据集,它使用[]...创建data.table与创建data.frame类似: dt = data.table(x = 1:3, y = rnorm(3), z = letters[1:3]) dt #> x...data.table的基本语法是dt[i, j, by],简单说就是使用i选择行,用by分组,然后计算j。接下来我们看看data.table继承了什么,增强了什么。...对数据进行分组汇总 by是data.table中另一个重要参数(即方括号内的第3个参数),它可以将数据按照by值进行分组,并对分组计算第2个参数。...(year = year(date))] par(oldpar) 这里我们没有为plot()设定data参数,图像也成功绘制,这是因为该操作是在data.table的语义中进行的。

    7.3K20

    data.table包使用应该注意的一些细节

    fread中nThread 参数的使用   注意默认nThread=getDTthreads(),即使用所有能用的核心,但并不是核心用的越多越好,本人亲自测试的情况下,其实单核具有较强的性能,只有在数据大于...  as.matrix作用于data.table时会调用as.matrix.data.table,有一个rownames参数可以指定保留为行名的列 矩阵转换成data.table时可以保留列名   在...as.data.table函数中同样有一个rownames参数,设置为T可以将行名保留下来作为data.table的一列 不建议set和for循环一起使用   虽然set可以在内存上直接改变数值,但在R...tstrsplit函数可以将一列按照分隔符分成多列,函数返回的是一个列表,举例:DT[, c("c1", "c2") := tstrsplit(x, "/", fixed=TRUE)][],将x列按照/...分隔,分割成c1,c2两列 支持类似于SQLs的分组运算   带有rollup, cube, groupingsets函数 参考资料 data.table 1.11.2 manual:https://cran.r-project.org

    1.8K10

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

    :对每个小片断独立进行操作; combine:把片断重新组合。...可以看到,计算结果中的第一列实际上是“SELLERID.CLIENT”,我们需要把它拆分成两列并调换顺序才行。...可见order用法 subset()在数据集中非常好用,which是针对较小的数据筛选,比较低纬度的数据筛选时候可以用的。 subset=which+数据集操作 which=order+多变量运行。...(iris$setosa)] #按照照setosa的大小,重排Sepal.Length数据列 四、dplyr与data.table data.table可是比dplyr以及python中的...data.table包提供了一个非常简洁的通用格式:DT[i,j,by],可以理解为:对于数据集DT,选取子集行i,通过by分组计算j。

    22K32
    领券