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

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

将一个R对象转化为data.table,R可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,将行名存在"rn"行中,keep.rownames...转化字符并通过R内部UTC转回本地时间。...n列,.N(总列数,直接在j输入.N取最后一列),:=(直接在data.table上添加列,没有copy过程,所以快,有需要的话注意备份),.SD输出子集,.SD[n]输出子集的第n列,DT[,....(v), by=x] [] #加[]将结果输出到屏幕上 DT[,c("m","n"):=list(mean(v),min(v)), by=x][] # 按x分组后同时添加m,n 两列,内容是分别是mean...SD就包括了页写选定的特定列,可以对这些子集应用函数处理 allow.cartesian FALSE防止结果超出nrow(x)+nrow(i)行,常常因为i中有重复的列而超出。

5.9K20

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

data.table包提供了一个非常简洁的通用格式:DT[i,j,by],可以理解为:对于数据集DT,选取子集行i,通过by分组计算j。...data.table中,还有一个比较特立独行的函数: 使用:=引用来添加或更新一列(参考:R语言data.table速查手册) DT[, c("V1","V2") := list(round(exp(V1...="Hospice"] (3)还有一些复杂结构: dt[a=='B' & c2>3, b:=100] #其他结构 在dt数据集中,筛选a变量等于"B",c2变量大于3,同时将添加b变量,数值等于...%>%的功能是用于实现将一个函数的输出传递给下一个函数的第一个参数。注意这里的,传递给下一个函数的第一个参数,然后就不用写第一个参数了。在dplyr分组求和的过程中,还是挺有用的。...nomatch参数用于控制,当在i中没有到匹配数据的返回结果,默认为NA,也能设定为0。

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

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

    可以看到,计算结果中的第一列实际上是“SELLERID.CLIENT”,我们需要把它拆分成两列并调换顺序才行。...")],function(x) sum(x)) 4、subset()函数 利用subset()函数进行访问和选取数据框的数据更为灵活,subset函数将满足条件的向量、矩阵和数据框按子集的方式返回。...(iris$setosa)] #按照照setosa的大小,重排Sepal.Length数据列 四、dplyr与data.table data.table可是比dplyr以及python中的...data.table包提供了一个非常简洁的通用格式:DT[i,j,by],可以理解为:对于数据集DT,选取子集行i,通过by分组计算j。...data.table比较简洁一步搞定,dplyr花了两步,不过也dplyr也可以通过%>%来实现一步搞定。%>%的功能是用于实现将一个函数的输出传递给下一个函数的第一个参数。

    20.9K32

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

    例如,使用setkey()将id设置为product_info中的一个键: setkey(product_info, id) 同样的,函数无任何返回,但我们已经为原始数据设置了键,而且原来的数据看起来也没变化...中,by所对应的组合中的值是唯一的,虽然实现了目标,但结果中没有设置键: key(type_class_test0) #> NULL 这种情况下,我们可以使用keyby来确保结果的data.table自动将...我们知道R存在复制修改机制,这在进行大数据计算时开销很大,data.table提供了一系列支持语义的set函数,它们可以原地修改data.table,因此避免不必要的复制。...,分割后的每个部分都是原始数据的一个子集,并且原始数据和子集都是data.table。...举例,我们定义一个函数,计算market_data中由用户定义的列的年度均值: average = function(column){ market_data[, .

    6.4K20

    5个例子比较Python Pandas 和R data.table

    示例2 对于第二个示例,我们通过应用几个过滤器创建原始数据集的子集。这个子集包括价值超过100万美元,类型为h的房子。...另一方面,data.table仅使用列名就足够了。 示例3 在数据分析中使用的一个非常常见的函数是groupby函数。它允许基于一些数值度量比较分类变量中的不同值。...我们使用计数函数来获得每组房屋的数量。”。N”可作为data.table中的count函数。 默认情况下,这两个库都按升序对结果排序。排序规则在pandas中的ascending参数控制。...data.table中使用减号获得降序结果。 示例5 在最后一个示例中,我们将看到如何更改列名。例如,我们可以更改类型和距离列的名称。...inplace参数用于将结果保存在原始数据帧中。 对于data.table,我们使用setnames函数。它使用三个参数,分别是表名,要更改的列名和新列名。

    3.1K30

    「r」dplyr 里的 join 与 base 里的 merge 存在差异

    r4 r1 r3 r2 #> 1 S1 S2 S2 S1 S1 #> 2 S2 S1 S1 S2 S2 看起来似乎有点不可理喻,但实际上上面我构造的数据集是有点特别的:前 2 个子集和第 3 个子集是没有可以连接的列的...本质上是 data.table 体格的泛型函数不支持类似基础包中的操作。 如何编写代码支持对上述数据集的连接操作?...一般工作情况下,不同的数据子集都存在可以连接的列,所以无论上述哪种方法都可以胜任工作。...如果 be_join 不为空,进行如下的循环: 如果存在,则将这个子集和 to_join 按共同列合并 如果不存在,使用循环位移一位,将当前 be_join 的第 2 个子集移动为 第 1 个。...检查 be_join 第一个子集的列与 to_join 存在共同列 等待循环结束 我们可以查看结果: to_join[, c("r1", "r2", "r3", "r4", "r5")] #> r1

    1.6K30

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

    数据框数据框的创建数据框来源主要包括用代码新建(data.frame),由已有数据转换或处理得到(取子集、运算、合并等操作),读取表格文件(read.csv,read.table等)及R语言内置数据函数...R语言将列名的特殊字符-转化了,该编号可能与其他数据中编号无法匹配,ex2 的函数决定的,不是由后缀决定的,save为csv实际上还是一个Rdata#readr包可以实现base包中的类似功能library(data.table)#其中的fread...2的元素赋值修改数据框的连接merge函数可连接两个数据框,通过指定公共列使具有相同元素的行的列合并*merge函数可支持更复杂的连接,但通过inner_join等更为简便,后述test1 子集方法同数据框t(m) #转置行与列,数据框转置后为矩阵as.data.frame(m) #将矩阵转换为数据框列表列表内有多个数据框或矩阵,可通过list函数将其组成一个列表l <- list(m1

    7.9K00

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

    因此,在对大数据处理上,使用data.table无疑具有极高的效率。这里主要介绍在基因组数据分析中可能会用到的函数。...转化字符并通过R内部UTC转回本地时间。...,默认_; subset 指定要铸造的子集;利用; margins 函数尚不能应用(作者还没写好),预计设定编辑汇总方向; fill 填充缺失值; drop 设置成FALSE...(datatable.verbose=TRUE) 对于前面的DT,我现在将f和d开头的列名的列作为测量变量,如下 pattern函数下面会讲,这里再讲一下的是melt和dcast的联合使用,先用melt...)的结果 最后,写完这篇博客,timetaken断断续续大约一星期 参考文献 data.table manual: https://cran.r-project.org/web/packages

    3.4K10

    Day4-5 R语言代码

    (2)在数据框类型数据的行取子集时、导入TXT文件时,注意一下数值型数据的行/中,有没有藏着字符型数据。马虎了就会影响后续数据处理。...可以让R不修改行列名字,PS:R语言中行列名字中不能有特殊字符; 2)row.names = 1”这个参数意思时不能把第一列作为行名;PS:R语言中行名不能重复,如果将有重复的A列设为行名,需要先不将...row.name参数添加进来,处理A列的重复值(去重复、两行取平均值合并为一行),再设置为行名。...,在读取过程中不需要添加过多参数,而且读取大文件速度快,不过读取的数据会被默认为"data.table"格式,需要添加参数"data.table=F"来避免 #data.table ex1 = data.table...4、本地安装,将R包zip文件下载下来,然后放在工作路径中 devtools::install_local(“xxxx.zip”) 5、window电脑可能会存在的权限问题 6、R包不会用,有作者的第一手教程

    26620

    《高效R语言编程》6--高效数据木匠

    tidyr方便了收集与分割两个常见的操作 gather()收集是将列名换成新变量,将宽表变成长表,spread()是实现相反过程的函数。...与基本R中类似函数不同,变量无需使用 $ 操作符就可直接使用,设计与magrittr包的%>%管道操作符一起使用,以允许每个数据阶段写成新的一行。其是一个大型包,本身可以看成一门语言。...列改名 rename(),使用反引号‘`’包裹,允许R使用不规范的列名。...RODBC是一个资深包,提供R与SQL server的接口。DBI包提供了通用接口与驱动程序的类集,如RSQLITE,是访问数据库的统一框架,允许其他驱动程序以模块包添加。...这里建议不要把数据库密码和API密钥等放在命令中,而要放大.Renviron文件中。dbConnect()函数连接数据库,dbSendQuery()查询,dbFetch()加载到R中。

    1.9K20

    Day05 生信马拉松-文件的读写

    文件的读取1.1 R能读取的文件格式图片1.2 .txt文件的读取常见错误:read.table("ex1.txt"), read.table函数默认header = F,因此会自动加列名"V1","V2....csv"),直接使用read.csv()函数会出现以下错误①列名分隔符"-"被改为"."②第1列默认被添加列名"x"图片正确使用:read.csv("ex2.csv",row.names = 1,check.names...= F) 表格文件读入到R中就得到一个data.frame,在R中对data.frame的修改不会同步到表格1.4 读取非工作目录下的文件read.csv("import/gene.csv") import.../"为上一级文件,可叠加1.6 补充内容1.6.1 数据框不允许重复的行名图片解决方案: ①先不加row.names参数读取 ②处理第1列重复值(去重、均值、合并为一行等) ③将第1列设为行名1.6.2...数据框列中数据缺失图片错误解决方式soft 的错列图片正确使用:soft2 <- read.table

    20920

    Fama French (FF) 三因子模型和CAPM模型分析股票市场投资组合风险收益可视化

    数据被打包为 zip 文件,所以需要做的不仅仅是调用 read_csv()。使用tempfile() 基础 R 中的 函数来创建一个名为 temp. 这是我们将放置压缩文件的地方。...temp <- tempfile() R 创建了一个名为的临时文件 temp 。下载 3-factor zip。 我们想将它传递给 download.file() 并将结果存储在 temp....如果我们导入不同的 FF 因子集,我们将需要指定不同的列名。 作为一种替代方法,下面的代码块在导入后将列转换为数字,但更通用。它可以应用于其他 FF 因子集合。...vars()函数的操作与select()函数类似,我们可以通过在date前面加一个负号来告诉它对所有列进行操作,除了date列。...我们可以将这些结果通过管道传输到 ggplot() 并创建具有置信区间的系数散点图。我不想绘制截距,因此会将其从代码流中过滤掉。 我们用errorbar添加置信区间。

    3.9K30

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

    问 题:批量处理表中变量 正式开始说问题之前,我们先回顾一下data.table的基本语句DT[i, j, by],简而言之,"i"是对行进行选择,"j"是对列进行操作,"by"是分组。...批 量处理法:用lapply批量处理变量 在此时lapply的妙用就显现出来了,在R中lapply用来对list中每一个element进行相同处理,如何把它运用到data.table,话不多说先上代码:...而我们要处理的变量是第3个到第34个,所以在.SD中选出3至34列,运用lapply对选中的.SD[, 3:34]里面每一个element使用as.Date函数。 再看,':='的左边。...如何把处理好的这些变量与变量名进行对应,这里就用到了colnames()这个函数,提取出我们这个data.table第3到第34个变量的名字,这样就可以将变量名和更改格式后的变量按顺序进行一一匹配。...输出结果非常正常,那么只能证明一点:.SD不能用在 := 的左边!!!大家在运用的过程中必须要注意。

    1.2K30

    人工智能大模型的好处之任意数据结构的转换

    如下所示的沟通过程: 在R语言中,如果有一个列表(list),其中每个元素都是向量,并且你想要将这个列表转换成一个数据框(data frame),可以使用do.call函数结合rbindlist函数从data.table...在这个例子中,Reduce函数迭代地将列表中的向量组合(通过cbind)成一个单一的数据框,names(mylist)用于获取列表元素的名称并设置为新数据框的列名。...对于长度不相等的向量,可以采取以下方法来处理: 使用 data.table 包的 rbindlist 函数:通过设置 fill 参数为 TRUE,可以使得较短的向量用NA填充到与其他向量相同的长度。...print(df) 手动处理:如果需要更细致的控制,可以手动将每个向量转换为数据框,然后添加一个表示原始向量名称的列,最后使用 bind_rows 合并它们。...df <- bind_rows(df_list) # 查看结果 print(df) 在这些方法中,data.table 的 rbindlist 方法提供了一个简单且直接的解决方案,特别是当你希望保持原始列表中向量名称的顺序时

    8910

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

    data.table 1、I/O性能: data.table的被推崇的重要原因就是他的IO吞吐性能在R语言诸多包中首屈一指,这里以一个1.6G多的2015年纽约自行车出行数据集为例来检验其性能到底如何,...rm(list=ls()) gc() 2、索引切片聚合 data.table中提供了将行索引、列切片、分组功能于一体的数据处理模型。...当整列和聚合的单值同时输出时,可以支持自动补齐操作。 当聚合函数与data.table中的分组参数一起使用时,data.table的真正威力才逐渐显露。 mydata[,....左手用R右手Python系列——数据合并与追加 长宽转换: 长宽转换仍然支持plyr中的melt/dcast函数以及tidyr中的gather/spread函数。...本篇仅对data.table的基础常用函数做一个整理,如果想要学习期更为灵活高阶的用法,还请异步官方文档。 左手用R右手Python系列——数据塑型与长宽转换

    3.6K80

    Python 弱引用 weakref

    使用方法 创建弱引用 weakref.ref(object[,callback]) # callback 可选的回调函数,在引用对象被删除时调用 # 此只读属性返回当前关联到弱引用的回调。...如果提供了callback而不是None,并且返回的weakref对象还活着,那么回调将在对象即将完成时被调用;弱引用对象将作为唯一参数传递给回调;所指对象将不再可用。...回调引发的异常将在标准错误输出中注明,但不能传播;它们的处理方式与对象的 __del__() 方法引发的异常完全相同。 如果对象是可散列的,则弱引用是可散列的。...当不再有对键的强引用时,字典中的条目将被丢弃。这可用于将附加数据与应用程序其他部分所拥有的对象相关联,而无需向这些对象添加属性。这对于覆盖属性访问的对象特别有用。...None ,调用者便知道对象已经被销毁了; 执行回调函数 wr_callback (如有); 由此可见,弱引用的工作原理其实就是设计模式中的 观察者模式( Observer )。

    1.1K10

    Learn R 函数和R包

    ,参数是一个数值型向量,输出结果是该向量的平均值加2倍的标准差,并写出用户使用该函数的代码 。...") #ls是展示出该包中的函数 R语言中的函数 ()前的是函数 [] 是取子集,一定是个数据 【】里有“,”->向量或矩阵 [[]] 前的通常是个列表 列表取子集 $ 数据框取子集 <-...分隔符 常见的分隔符:逗号、空格、制表符(\t) 将表格文件读取到R语言中 read.table() #读取txt格式 read.csv()#读取csv格式 文件的导出 不要覆盖原文件 代码可重复 数据可重现...>save(soft,file = "soft.Rdata") >rm(list = ls()) #将环境中的所有数据清空 为了看保存的文件 >load(file = "soft.Rdata") 练习...read.table()智能版 >a=data.table::fread("soft.txt",data.table = F)#读取很智能,不会导致窜列 #### 4.rio包 可以读取任何形式,但有问题的文件仍有问题

    1.4K00
    领券