当前位置: 首页 > news >正文

R语言中的数据重塑

文章目录

  • 介绍
  • reshape2::melt()的用法
    • 实例
  • reshape2::dcast()的用法
    • 实例
  • tidyr::gather()的用法
  • tidyr::spread()的用法

介绍

tidyverse系列包中的函数操作都是针对简洁数据框进行的,对于不是简洁的数据,实现需要进行数据重塑。数据重塑主要包括长宽表的转换、拆分/合并列、方形化。长宽表转化最初使用的是reshape2包的melt()和cast()函数,后来又发展到早起tidyr包的gather()和spread()函数,现在tidyr 1.0之后又提供了更加易用的pivot_longer()和pivot_wider()函数。

reshape2::melt()的用法

melt()实现了将宽表转化为长表的功能。

melt(data,id.vars=c(" "),measure.vars=c("  "),variable.name="variable",value.name="value")

其中:

  • id.vars相当于码是只转化后不变的列
  • meansure.vars表示在转化中需要重塑的列
  • variable.name表示将measure.vars转化为一列后变量列的名称
  • value.name表示重塑后变为一列的数值列的名称

实例

> Df
#    key  a  b  c
# 1   A NA NA  1
# 2   B NA  2 NA
# 3   C  3 NA NA
# 4   D NA  4 NA
# 5   E NA NA  5
melt(Df,id.vars = 'key',measure.vars = c('a','b','c'),variable.name = 'vars',value.name = 'value' )
#     key vars value
# 1    A    a    NA
# 2    B    a    NA
# 3    C    a     3
# 4    D    a    NA
# 5    E    a    NA
# 6    A    b    NA
# 7    B    b     2
# 8    C    b    NA
# 9    D    b     4
# 10   E    b    NA
# 11   A    c     1
# 12   B    c    NA
# 13   C    c    NA
# 14   D    c    NA
# 15   E    c     5

reshape2::dcast()的用法

dcast()实现了将长表转化为宽表的功能。

dcast( data, formula, value.var...)

其中,formula的形式为var1+var2~variable, var1和var2表示码是变化中不变的列,variable表示变量名列的列名;
value.var表示数据列的列名。

实例

DF=data.frame(v=1:5,key=LETTERS[1:5],vars=sample(letters[1:3],5,replace = T))
#   v key vars
# 1 1   A    c
# 2 2   B    b
# 3 3   C    a
# 4 4   D    b
# 5 5   E    c
dcast(DF,formula = key~vars,value.var = 'v')
#   key  a  b  c
# 1   A NA NA  1
# 2   B NA  2 NA
# 3   C  3 NA NA
# 4   D NA  4 NA
# 5   E NA NA  5

tidyr::gather()的用法

tidyr::spread()的用法

http://www.lryc.cn/news/178889.html

相关文章:

  • 基于Java实现的社区团购系统设计与实现(源码+lw+部署文档+讲解等)
  • nodejs+vue网上婚纱购物系统elementui
  • 【2023集创赛】加速科技杯三等奖作品:私密性高精度刷手身份认证系统
  • 1500*C. Kefa and Park(dfstree)
  • 【2023保研】双非上岸东南网安
  • Redis与Mybatis
  • MySQL架构 InnoDB存储引擎
  • K8S-CNI
  • Redis 集合类型(Set)和命令 (数据类型 四)
  • thinkphp5 如何模拟在apifox里面 post数据接收
  • 建造者模式 创建型模式之三
  • 发布以太坊测试网络中的第一笔交易
  • No module named ipykernel解决方案
  • Java 基于 SpringBoot 的校园疫情防控系统
  • windows的ui自动化测试相关
  • Mybatis 二级缓存(使用Ehcache作为二级缓存)
  • C语言 Cortex-A7核 IIC实验
  • 【每日一题】2769. 找出最大的可达成数字
  • 开源电子合同签署平台小程序源码 在线签署电子合同小程序源码 合同在线签署源码
  • 36 二叉树中序遍历
  • 广州华锐互动:VR结绳逃生训练模拟真实火灾场景,增强训练沉浸感
  • Flink安装及简单使用
  • QT信号槽
  • Spring Boot 技术架构图(InsCode AI 创作助手辅助)
  • python使用mitmproxy和mitmdump抓包在手机上抓包(三)
  • react create-react-app v5 从零搭建(使用 npm run eject)
  • 在微信小程序中跳转到另一个小程序(多种实现方式)
  • beanstalkd 启动跟停止【经常使用 nohup 和 配合来启动程序,如: nohup ./test 同时免疫SIGINT和SIGHUP信号】
  • 企业年报API的应用:从金融投资到市场研究
  • 基于Matlab实现评价型模型求解方法(附上源码+数据)