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

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

data.table 1、I/O性能: data.table被推崇重要原因就是他IO吞吐性能在R语言诸多包中首屈一指,这里以一个1.6G多2015年纽约自行车出行数据集为例来检验其性能到底如何,...列索引位置不仅支持列名索引,可以直接支持内建函数操作。 mydata[,.(flight/1000,carrier,tailnum)] 支持直接在列索引位置新建列,赋值符号为:=。...自定义名称: mydata[,....SD, mean)则将各个子块对应列应用于均值运算,并返回最终列表。...本篇仅对data.table基础常用函数做一个整理,如果想要学习期更为灵活高阶用法,还请异步官方文档。 左手用R右手Python系列——数据塑型与长宽转换

3.6K80

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

%>%功能是用于实现将一个函数输出传递给下一个函数第一个参数。注意这里,传递给下一个函数第一个参数,然后就不用写第一个参数了。在dplyr分组求和过程中,还是挺有用。...2、on=""方式 DT[X, on="x"] 这里on指的是DT变量中变量名称,X还是按照key,如果没设置就会默认第一行为key。...nomatch参数用于控制,当在i中没有到匹配数据返回结果,默认为NA,也能设定为0。...SD只能在位置j中使用。 .SDcols常于.SD用在一起,他可以指定.SD中所包含列,也就是对.SD取子集。...参考文献: 些许案例,代码参考自以下博客,感谢你们辛勤: 1、R语言data.table简介 2、超高性能数据处理包data.table 3、R语言data.table速查手册 4、R高效数据处理包

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

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

版权声明:本文为博主原创文章,转载请注明出处     R语言data.table包是自带包data.frame升级版,用于数据框格式数据处理,最大特点快。...将一个R对象转化为data.tableR可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,将行名存在"rn"行中,keep.rownames...; drop,需要取掉列名或者列号,要其它; colClasses,类字符矢量,用于罕见覆盖而不是常规使用,只会使一列变为更高类型,不能降低类型; integer64,读如64位整型数;...,而是允许处理字符串在本机编码; quote,默认""",如果以双引开头,fread强有力处理里面的引号,如果失败了就会用其它尝试,如果设置quote="",默认引号不可用 strip.white...n列,.N(总列数,直接在j输入.N取最后一列),:=(直接在data.table上添加列,没有copy过程,所以快,有需要的话注意备份),.SD输出子集,.SD[n]输出子集第n列,DT[,.

5.7K20

data.table语句批量处理变量

写 在前面 本期“大猫R语言公众号”仍由“村长”供稿。村长继续为大家奉上data.table使用案例心得,希望大家能够继续支持村长!!...批 量处理法:用lapply批量处理变量 在此时lapply妙用就显现出来了,在R中lapply用来对list中每一个element进行相同处理,如何把它运用到data.table,话不多说先上代码:...我们知道在data.table包中,.SD是经过i和by处理之后剩下那部分数据集,它格式是一个data.table,同时它是一个list。...注 意事项:.SD用法 可以说.SDdata.table处理中非常重要一个用法,但也切勿乱用,在这里笔者发现了一个关于.SD问题,首先我们改一下代码: # 将 := 左边DT改成.SD ----...下 期预告 下期大猫R语言课堂还是由村长来进行撰写和推送,届时将会给大家带来一个比较有趣data.table发现,敬请期待!! ?

1.1K30

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

接「R」数据操作(一)和「R」数据操作(二) 使用data.table包操作数据 data.table包提供了一个加强版data.frame,它运行效率极高,而且能够处理适合内存大数据集,它使用[]...这样挺麻烦,因此data.table包提供了对列进行原地赋值符号:=,例如product_stats开始是这样: product_stats #> id material size weight...动态作用域 我们不仅可以直接使用列,也可以提前定义注入.N、.I和.SD来指代数据中重要部分。...此外,j表达式还可以用于构建模型代码,下面是一个批量拟合线性模型例子。这里使用diamonds数据集。...("volume") #> year average #> 1: 2015 4000 #> 2: 2016 4003 我们可以利用此包专门语法创造一个列数动态变化组合,并且组合中列是由动态变化名称决定

6K20

Learn R 函数和R

> m2d=function(x){+mean(x)+2*sd(x)} #sd()是标准差 不会是一个值 > m2d(rnorm(10)) [1] 1.738949 R包 介绍 R包都在哪里 ####...赋值 = 赋值,或连接形式参数与实际参数 == 判断是否相等 !...否定 { } 用于容纳多行代码 #注释 " " 字符型数据 ::包::函数 #文件名必须带引号,且在能识别文件名称函数括号里面,实际参数位置上 文件读写 csv格式 > read.csv("ex3...) #不需要进行赋值 如x=load("xxx.Rdata") Rdata本身含有变量不需要再进行赋值 #在当前文件夹(data自己建立文件夹)下用“/”打开 >read.csv(".../R_01/gands.Rdata") -----注意:用tab补齐文件名称 避免出错------- 文件读写部分 #1.读取ex1.txt 用read.table(" ") > ex1 <- read.table

1.4K00

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

接下来,我就为大家分享几个我在工作当中最常用来做数据分析用到包,dplyr和data.table,我保证你get到这两个包后,就再也不想用R里面自带基础包函数进行数据分析了!!...作为课代表我来帮大家简单总结一下: 我们都知道R有个令人诟病缺点就是跑起来耗内存,data.table相对于dplyr 更快、更节省内存了!...(sum(v1),sd(v3))] data.table居然支持直接在j上进行列计算,看到这里是不是觉得超牛逼,关键是代码非常简洁,一句话事,就帮我们完成数据筛选和计算了! DT[,....(sum_v1=sum(v1),sd_v3=sd(v3))] 还可以直接给计算列赋予名称哦!!功能强大得我都要笑开花了! 使用by 这还只是小试牛刀,你忘了我们还有个by吗!! DT[,....(反正我用了data.table以后就再也不想用R里面基础包自带函数了,今天就黑到这里,匿了~) ——Copyright Reserved by Erin

2.4K70

R语言 数据框、矩阵、列表创建、修改、导出

csv打开会报错,该知识点用于防止部分代码中错误应用csv套用tsv等#文件读写部分(文件位于R_02Rproject中)#1.读取ex1.txt txt用read.table读,变量名不需要有"",...函数可以避免此前错误a 0] #先取出列名为gene向量,在给出一个一一对应逻辑值向量数据框修改修改数据相当于定位取出数据后赋值赋值需对应元素或向量df1[3,3]...= ls())load(file = "soft.Rdata") #使Rdata中向量出现在环境内,本身有名称,无需赋值矩阵和列表矩阵矩阵内所有元素数据类型必须相同*警惕因数据类型不同导致矩阵强制转换引起报错...calculate<-function(a){mean(a)+2*sd(a)}calculate(c(1,1,1))calculate(rnorm(10,mean=0,sd=1)) #会出现值不相等情况

7.7K00

一行代码搞定分组回归

写 在前面 在目前为止所有小伙伴们向大猫请教过R问题中,大猫总结了最常遇见同时也是比较难三个问题,分别是(1)事件研究法;(2)分组回归;(3)滚动回归。...问 题引入 很多时候我们需要处理数据集中会有一个变量用于标记变量所在组。例如下图中,stkid(我们可以把它想象成股票代码)有五种可能:a, b, c, d, e,每一个字母表示一只股票。...".SD"含义是Subset of Data,每一个.SD都代表一个由keyby所决定分组。...具体而言,如果此时keyby语句循环到'a',那么.SD就表示原数据集中所有stkid == 'a'行。在这里,.SD用来作为回归函数lm输入数据集。 coef函数用来提取回归系数。...其中原理是,data.table最终输出必须是一个class为list元素,符合条件除了list自己,还包括 data.frame,data.table等。

3.4K40

理解并行计算:r future为什么会启动比workers多得多线程?

rfuture包提供了一种实现多线程并行计算接口,但有时候在使用时,我发现r启动了比我设定多得多计算资源。...( mean = mean(x$v1), sd = sd(x$v1) ) }) rv 上面我启用了10个线程(workers)对数据进行处理,但实际运行时候CPU资源图可以会类似下面这样...在很久之前我就问过future包作者,讨论在:https://github.com/HenrikBengtsson/future/issues/343 R语言大神任坤做了一段非常好解释: 理解起来就是...问题核心在于R很多包或者底层库在你不知道情况下启动了并行计算,例如data.table。...举一个例子就是,如果你指定了4个worker,你只想使用4个CPU核心计算,但如果并行计算内容函数使用了像data.table操作,而默认情况下data.table为了加速计算会使用系统全部核心数目

1.1K20

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

写 在前面 本期还是由村长来为大家供稿,这期讲一个村长遇到关于data.table比较有趣问题,希望大家支持!! 问 题:i, j, by同时输入数字会怎样?...在往期公众号文章,都提到了data.table主要语句DT[i, j, by], 简而言之,i 用来选择或者排序,by 用来分组,j 用来运用函数进行处理。...以mtcars这个R自带数据集为例,我们知道mtcars[1]运行结果,是选择这个数据集第一行,结果如下: ? mtcars[1,1]运行结果,是选择第一行第一列元素,结果如下: ?...首先,我们单独看i只有一个1情况下是什么运行结果,为了让运行出来代码被认定是data.table格式,我们在j中加入.SD(不清楚.SD用途小伙伴可以查看data.tablemanual,或者查看笔者上一篇推送用...data.table语句批量处理变量),代码如下: mtcars[1, .SD] 运行结果如下: ?

1.2K30

R语言学习笔记-Day4

jimmy <- function(a,b,m = 2){(a+b)^m+}function:创造其他函数jimmy:函数名称;m存在默认值=2,可修改函数原理是代数,把参数带入大括号里代码2 R包...学习目的:找到所有R使用规律3 R包镜像镜像网站相当于主网站副本(备份),访问主网站存在障碍时可选择访问镜像网站。...都需要加载6 R包安装和使用逻辑6.1 安装包-加载包-使用包里函数library(stringr)library()是检查是否安装成功标准R包安装成功唯一标准:library()没有errorstr_detect...sdsd(x,na.rm = FALSE)#若存在缺失值则应写sd(x,na.rm=TRUE)7.2 找R包介绍页面limma:Linear Models for Microarray DatabrowseVignettes...")用于读取/导出文件R包base:read.csv()read.table()read.delim() #存在个别参数改变,同样适用于读取txt文件write.table()write.csv()readr

14110

R语言:data.table语句批量生成变量

:= 右边 关于 ':= lapply' 用法,在这里小编不再赘述,如果大家对此不是很熟悉可以看这一期公众号:用data.table语句批量处理变量。...代码如下: lapply(.SD[, 2:23], str_match, "继发性醛固酮|醛固酮") := 左边 我们可以再回顾一下,上文链接中用data.table语句批量处理变量推送中所提到 ‘...str_c(colnames(clinic)[2:23], "_xtrct") 最后我们把 ':=' 左右两边代码组合在一起,放入data.table语句j中就是我们在一开始所讲述代码。...大猫R语言课堂 我是大猫,一个高中读文科但却在代码、数学路上狂奔不止Finance Ph. D Candidate。 我是村长,一个玩了9年指弹吉他,却被代码深深吸引博士候选人。...大猫微信号是: iRoss2007 村长B站主页是:http://space.bilibili.com/40771572 大猫R语言课堂关注R语言、数据挖掘以及经济金融学。

1.2K20

Q&A:在melt和dcast之间反复横跳

Q&A:在melt和dcast之间反复横跳 写在前面 各位水友大家好,自从上一次发布了改版推文说明之后,大喵和村长收到了很多水友问题,我们也对这些问题进行了回复,希望能对大家R语言学习有所帮助,在此先谢谢各位支持...library(data.table) data <- fread("data.txt", encoding = "UTF-8", na.string = "") data[1:5] 姓名 用药名称1...” 问题解决 我们照惯例先把这段代码优雅放上来,再细细解读: data <- data[, melt(.SD, measure = patterns("^用药名称", "^用法", "^用量", "^...利用这个函数目的在于,在data.table中进行数据处理贯彻是向量思维。 这也是R语言和Python语言进行数据处理底层逻辑。从数据特点角度来解释,也即是长表优于宽表。...此外关于函数筛选用法,这里不进行阐述,关于这内容详细解读可参考R语言:以多列标准筛选特定行。 此外对variable这个变量进行了更改。

65720
领券