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

将2列data.table从长调整为宽

是指将一个包含两列数据的data.table对象,按照某种规则将其转换为包含多列数据的data.table对象。

在R语言中,可以使用dcast()函数来实现将data.table从长调整为宽的操作。dcast()函数的基本语法如下:

代码语言:R
复制
dcast(data, formula, value.var, fun.aggregate)

其中,参数说明如下:

  • data:要进行转换的data.table对象。
  • formula:转换的公式,指定要进行转换的列和转换后的列。
  • value.var:指定要进行转换的列名。
  • fun.aggregate:指定对转换后的列进行聚合操作的函数。

下面是一个示例:

代码语言:R
复制
library(data.table)

# 创建一个包含两列数据的data.table对象
dt <- data.table(
  id = c(1, 1, 2, 2),
  value = c("A", "B", "C", "D")
)

# 将data.table从长调整为宽
dt_wide <- dcast(dt, id ~ value)

# 输出转换后的data.table对象
print(dt_wide)

输出结果如下:

代码语言:txt
复制
   id A B C D
1:  1 A B NA NA
2:  2 NA NA C D

在这个示例中,我们将包含两列数据的data.table对象dt从长调整为宽,根据id列进行转换,转换后的列分别为ABCD,对应的值为原始数据中的value列的取值。

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

相关·内容

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

tidyr主要提供了一个类似Excel中数据透视表(pivot table)的功能,提供gather和spread函数数据在格式和格式之间相互转化,应用在比如稀疏矩阵和稠密矩阵之间的转化。...它的设计理念类似于PhotoShop,具体参数包含设计对象、艺术渲染、统计量、尺寸调整、坐标系统、分片显示、位置调整、动画效果等等。...比如: 这时候broom包就派上用场了,直接统计结果转化为data frame格式: glance()函数,返回data frame格式的部分参数结果 七....data.table还参考了NoSQL中流行的Key-Value形式,引入了setkey()函数,数据框设置关键字索引。...DDF用一个统一的跨引擎API简化了多数据源的分析操作,进一步data frame底层的分布式傻瓜化。

3.8K120

R语言进阶笔记2 | 数据与ggplot2

数据是什么鬼? 之前介绍了如何多个性状的箱线图放在一个图上,比如learnasreml包中的fm数据,它有h1~h5五年的株高数据,想对它进行作图。...问题来了,什么是「数据」,什么是「数据」(不是短数据,这不是反义词,谢谢) 「数据:」 ❝即变量是多列数据,每一列都是一个值,比如株高数据,第一年的株高是一列,第二年的株高是一列,第三年的株高是一列...,这些数据就是数据。...怎么转化为数据 我知道三种方法: reshape2的melt函数,现在还知道这个包的人,R龄应该在5年以上了,反正我一直都用,很好用,但是被作者嫌弃了,现在被很多人嫌弃了…… data.table的metlt...pivot_longer 第二个-1,意思是除了第一个不处理,其它都处理,也可以用2:6表示第二到第六列处理 第三个names_to是变量的名称,这里定义Year 第四个values_to是保存的性状名

92020

好强一个Julia!CSV数据读取,性能最高多出R、Python 22倍

单线程CSV.jl比data.table中读取的R速度快约1.5倍。 而多线程,CSV.jl的速度提高了约22倍! Pandas的read_csv需要34秒才能读取,这比R和Julia都要慢。...单线程data.table读取大约比CSV.jl快两倍。 但是,使用更多线程,Julia的速度与R一样快或稍快。 数据集 这是一个相当的数据集,具有1000行和20k列。...房利美收购数据集 房利美网站上下载的数据集,有4000k行和25列,数据类型:Int、String、Float,Missing。 ? 单线程data.table比CSV.jl快1.25倍。...有些网友对于Julia给予了极大的期待: 在过去的十年中,大多数生态系统在Python上都具有巨大的价值,尤其是MATLAB抛在脑后。...Julia对Python进行了足够的改进,可以保证在接下来的5-10年内进行转换,并以相同的方式Python抛在后面。 ?

2K63

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

这是本书最重要的一章,涉及以下内容: 使用tidyr整理数据 使用dplyr处理数据 使用数据库 使用data.table处理数据 软件配置 library("tibble") library("tidyr...R语言运行几个长列比运行一些短列快,所以一般认为数据(不整洁),数据(整洁)。...tidyr方便了收集与分割两个常见的操作 gather()收集是列名换成新变量,表变成长表,spread()是实现相反过程的函数。...long" "lat" "group" "order" "region" [6] "subregion" # 使用数据库 R会把所有数据加载到内存中,数据库是硬盘中获取数据的...# 使用data.table()处理数据 是dplyr的替代,两个哪个好存在争议,最好学一个一直坚持下去。如果两个都是新手,推荐dplyr。

1.9K20

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

library(data.table) data <- fread("data.txt", encoding = "UTF-8", na.string = "") data[1:5] 姓名 用药名称1...利用这个函数的目的在于,在data.table中进行数据处理贯彻的是向量思维。 这也是R语言和Python语言进行数据处理的底层逻辑。数据特点的角度来解释,也即是表优于表。...1片 1年 规律 黄舜 1 盐酸吡格列酮(卡司平) 口服 2片qd 1年 规律 这一部分代码极为重要,首先利用rowMeans进行行筛选,的是原本就缺失的记录,以及在表到表转换中生成的缺失记录进行删除...由于之后需要将表变成表,因此需要对每一个姓名id的所有不同记录进行编号。可以发现经过melt之后的数据,编号依据是曾经的观测记录。现在数据的观测记录发生了改变,因此需要对观测记录进行重新编号。...表和表之间的相互转换,有时会在数据清洗中用到,对melt和dcast两个函数的理解需要深入。

65120

开发ETL为什么很多人用R不用Python

测试数据这样: 废话不多说,先看部分结果的截图吧。 上图截取的是复杂的groupby问题中对于5G与50G数据各ETL工具的用时情况,项目运行服务器的内存为128G,核数40。...modin.pandas vs data.table modin.pandas与data.table测试结果如下,所用数据5G,数据格式如上。...并且,rstudio-server线上版本的rstudio,后台就是linux环境,前端rstudio的ui,因此无需开发环境与生产环境不一致而苦恼,更不会因为某些包只能linux使用而无法在windows...首先,用prestohive中读取数据,ADB读取数据,数据量在5G左右。中间涉及到PCA以及其他计算,最后入库mysql,该任务每天跑一次 。...一个可行的实施方案Rpresto、RMysql提供I/O支持,data.table提供主体ETL,crontab提供调度服务。

1.8K30

Matt Dowle 演讲节选(二)

原来大猫使用的是秀米等富文本编辑器,最然可以实现很花哨的效果,但是每次编辑的时间可能都比写作的时间,而且富文本编辑器对于代码块的支持极弱,语法高亮没有就算了,但是代码块无法水平滚动就不能忍。...Matt 这个包取名为data.table,意味源于data.frame,但又不仅仅是data.frame。 ?...注:Matt 把 data.table的语法归纳 DF[i, j, by]。...这里的关键在于,在第一种方法中,每新的一行赋值,data.table就要重新复制一遍DT,也就是说,第一种方法的运行过程中,DF被复制了1000遍!...30分钟足够你用来享受下午茶(不愧是腐国人Orz)或是享用午餐……这是一个严肃的问题,5秒降低到1秒?没什么人会在意。10秒降低到1秒?同样不稀奇。但是我们讨论的却是30分钟降低到3秒!”

1.1K40

如何用R进行中文分词?

本 期目标 本期开始我们开始一个关于用R进行文本挖掘的系列教程,主要包括用jiebaR进行分词、建立自定义停用词库、用tm建立语料库,以及一些常见的文本挖掘算法应用。...2)安装data.tabledata.table是当前R中最强大的数据处理包之一,在大猫课堂中,所有的数据处理都要使用到data.table。...(text = text) 对 单个句子分词 我们首先建立对单个句子进行分词的函数seg_x,然后在下一步中使用sapply函数seg_x批量使用在数据集中。...seg_x, USE.NAMES = F) dt[, text.seg := x.out] 其中sapply的作用是,对于字符向量text中的每个元素都应用seg_x函数进行分词,然后把结果拼成一个字符向量...但是,以上代码仅适用于一般情况,对于一些复杂的文本,特别是通过爬虫网上获得的文本,常常会遇到许多意想不到的问题。

1.3K10

R练习50题 - 第六期

各个行业的平均每日股票数量大到小排序是什么? 24. 每个行业每天成交额最大的一只股票代码是什么? 25. 每个行业每天最大成交额是最小成交额的几倍? 26....各个行业的平均每日股票数量大到小排序是什么? data[, .(stkcd_amount = uniqueN(symbol)), keyby = ....首先理解题意:计算观测时间内每个行业每天股票的数量,求每个行业股票数量的均值,而后按大到小排序。...这一题主要运用了dcast一个‘’的表变成一个‘’的表,还有关于R中变量名引用问题。 line 1 与前一题类似计算出个股收益率ret,而后挑选出需要的变量。...line 2 生成一个变量tag,首先以日期date进行分组,而后以quantile(amount, 0.9)和quantile(amount, 0.1)两个标识,生成三个观测值max10%、min10%

53750

R语言入门之数据的导入和导出

当然对于一些基因组文件或者其它格式的文件,各自有各自的特点,原则上R语言可以读取任何格式的文件,只需掌握基本的读取文件方法后按照不同特点调整参数即可。 1....‘来分隔 #第一个参数是读入的文件(由文件所在路径及其文件名构成) #第二个参数是指定是否第一行作为列名,TRUE表示第一行即为列名 #第三个参数是指定分隔符 #第四个是指定行名所在的列,指定列名为“...具体方法如下: #安装并加载data.table包 #使用fread()函数读取文件,这里参数和之前的一致 #唯一的不同就是fread()可以直接读取压缩文件 install.packages(‘data.table...导出数据tsv文件 write.table(mydata, "c:/mydata.tsv", sep="\t") 3....function()的方法 (2)推荐刚入门的小伙伴下载Rstudio,使用起来很方便 (3)data.table这个包的一些功能可能依赖其它包,需要将其依赖包也安装上

3.2K40

『SD』图生图基础讲解

此时,SD 会根据引导图的颜色、构图重新生成一张新的图,可以看到右边的图的女孩样子不一样了,衣服也换了一件,背景也晚上变成下午。但整体的构图和色调还是和原图比较接近的。...Resize mode 项提供了不同的缩放模式: Just resize:仅调整大小。当生成图和原图高不一致时,生成的图片内容会被拉伸变形。 Crop and resize:裁剪后缩放。...当生成图和原图高不一致时,生成的图片会以基准,短边方向多出来的空白位置用色块来填补。 Just resize (latent upscale):调整大小(潜空间放大)。...当设置了生成图的高和原图的高不一致时,可以选择这几种缩放的方式对图片进行调整。但最好的方式还是生成的图片的高设置原图的高。...如果原图的高都很大,至少也要保证生成图的高和原图的宽高比例是一致的。 如果想更方便的生成图的缩放成原图的n倍,可以在 Resize by 里调整

13910

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

版权声明:本文博主原创文章,转载请注明出处     R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快。...一个R对象转化为data.table,R可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,行名存在"rn"行中,keep.rownames...header第一行是否是列名; na.strings,对NA的解释; file文件路径,再确保没有执行shell命令时很有用,也可以在input参数输入; stringsASFactors是否转化字符串因子..., verbose,是否交互和报告运行时间; autostart,机器可读这个区域任何行号,默认1L,如果这行是空,就读下一行; skip跳过读取的行数,1则第二行开始读,设置了这个选项,就会自动忽略...autostart选项,也可以是一个字符,skip="string",那么会包含该字符的行开始读; select,需要保留的列名或者列号,不要其它的; drop,需要取掉的列名或者列号,要其它的;

5.6K20

从零开始的异世界生信学习 R语言部分 04 文件的读写与认知

- read.csv("ex2.csv") 图片 ex2 <- read.csv("ex2.csv",row.names = 1,check.names = F) #row.names= 表示第一列行名...,header = T,fill = T) #其实不对,会把部分第五列的数据删除掉 图片 soft2 <- read.table("soft.txt",header = T,sep = "\t") #调整数据的分隔符...列名是什么 dim(soft) colnames(soft) 数据框导出成表格文件 #5.soft导出csv write.csv(soft,file = "soft.csv") #导出成csv格式...图片 一个项目的不同部分分别存在不同的文件夹 图片 图片 图片 # data.table包中的fread函数 soft = data.table::fread("soft.txt",data.table...由向量拼接而来 m3 = cbind(1:10, # cbind函数表示按照行合并向量,rbind按照列合并数据 11:20, 30:21) m3 #4.

1.3K40

一行代码对日期插值

情 况1:每个group起讫时间相等 首先来说第一种情况,在这种情况下,每个id都对应着“相同”的日期起讫点,例如,全都是2000-01-08至2000-02-13。...unique(dt$id), date = seq(as.Date("2000-01-08"), as.Date("2000-02-13"), by = "day")) CJ数据集这个样子...例如,在我们的样例数据集sample中,id=1的观测对应的日期最小值的01-08,最大值01-14,而我们希望填充这两个日期“之间”的所有值。...同理,对于id=2的观测,日期最大值02-09,最小值02-12,我希望填充就是02-10,02-11这两天。...(id, date), nomatch = NA] 这也是大猫喜欢data.table的一个原因:由于语法的灵活性,可以少生成很多中间数据集,这样也就不用绞尽脑汁那些中间数据集命名了。

1.4K30

Tidyverse|tidyr数据重塑之gather,spread(数据数据转化)

型数据和型数据在数据分析中非常常见 ,其中型数据更具可读性,型数据则更适合做分析。...R-tidyr主要有以下几大功能: gather—数据转为数据; spread—数据转为数据; unit—多列合并为一列; separate—一列分离多列 unit和separate可参考Tidyverse...二 数据转为数据 使用gather函数:gather(data, key, value, … , na.rm = FALSE, convert = FALSE) 其中 data:待转换的数据 key...三 数据转为数据 使用spread函数:spread(data, key, value, fill = NA, convert = FALSE, drop = TRUE) data:待转换的数据...这实际原来gather后的结果还原为gather前, 结果与mtcars一样,只是各列的相互位置稍有调整。 参考资料: Working_in_the_Tidyverse

5.6K20

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

网络上充斥的是data.table很好,很棒,性能棒之类的,但是我实际使用来看,就得泼个水,网上博客都是拿一些简单的案例数据,但是实际数据结构很复杂的情况下,批量操作对于data.table编码来说,...data.table包提供了一个非常简洁的通用格式:DT[i,j,by],可以理解:对于数据集DT,选取子集行i,通过by分组计算j。...="Hospice"] (3)还有一些复杂结构: dt[a=='B' & c2>3, b:=100] #其他结构 在dt数据集中,筛选a变量等于"B",c2变量大于3,同时添加b变量,数值等于...在data.table中有三类数据合并的方式: 1、直接用[] data_one[data_two,nomatch=NA,mult="all"] 以第一个数据基准,依据key进行合并,只出现重复部分...4、修改列名、行名 #把名字"old"的列,设置"new" > setnames(DT,"old","new") #把"V2","V3"列,设置"V2.rating","V3.DataCamp"

7.7K43
领券