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

R语言列操作函数

目录

一.dplyr包

1.新增变量和变量重新赋值

2.筛选行

3.筛选列

4.分组计算

5.管道操作符

6.连接数据框

二.tidyr

1.列的分裂

2.列的合并

3.宽数据转长数据

4.长数据转宽数据


一.dplyr包

1.新增变量和变量重新赋值

> head(ToothGrowth)len supp dose
1  4.2   VC  0.5
2 11.5   VC  0.5
3  7.3   VC  0.5
4  5.8   VC  0.5
5  6.4   VC  0.5
6 10.0   VC  0.5
> ToothGrowth2<-mutate(ToothGrowth,len=len^2,nv=1:nrow(ToothGrowth),
nv2=ifelse(nv>median(nv),"H","L"))> head(ToothGrowth2)len supp dose nv nv2
1  17.64   VC  0.5  1   L
2 132.25   VC  0.5  2   L
3  53.29   VC  0.5  3   L
4  33.64   VC  0.5  4   L
5  40.96   VC  0.5  5   L
6 100.00   VC  0.5  6   L

2.筛选行

> ToothGrowth3<-filter(ToothGrowth2,nv %in% 1:50,nv2=="H")> head(ToothGrowth3)len supp dose nv nv2
1 231.04   OJ  0.5 31   H
2 462.25   OJ  0.5 32   H
3 309.76   OJ  0.5 33   H
4  94.09   OJ  0.5 34   H
5 210.25   OJ  0.5 35   H
6 100.00   OJ  0.5 36   H

3.筛选列

#只显示第二列和第四列的数据
ToothGrowth4 <- select(ToothGrowth3,c(2,4))

4.分组计算

> summarise(ToothGrowth,len_max=max(len))len_max
1    33.9
#会按照supp进行分组
> summarise(group_by(ToothGrowth,supp),len_max=max(len))
# A tibble: 2 × 2supp  len_max<fct>   <dbl>
1 OJ       30.9
2 VC       33.9
> summarise(group_by(ToothGrowth,dose),len_max=max(len))
# A tibble: 3 × 2dose len_max<dbl>   <dbl>
1   0.5    21.5
2   1      27.3
3   2      33.9
> summarise(group_by(ToothGrowth,dose,supp),len_max=max(len))
`summarise()` has grouped output by 'dose'. You can override using the `.groups`
argument.
# A tibble: 6 × 3
# Groups:   dose [3]dose supp  len_max<dbl> <fct>   <dbl>
1   0.5 OJ       21.5
2   0.5 VC       11.5
3   1   OJ       27.3
4   1   VC       22.5
5   2   OJ       30.9
6   2   VC       33.9

5.管道操作符

> library(magrittr)
#将左边的参数作为右边参数的第一个参数
> ToothGrowth %>%
+ mutate(nv=1:nrow(ToothGrowth))%>%
+ filter(nv %in% 1:50)%>%
+ select(1:2) %>%
+ group_by(supp)%>%
+ summarise(len_max=max(len))%>%
+ as.data.frame()

6.连接数据框

> df1<-data.frame(c1=2:5,c2=LETTERS[2:5])
> df1c1 c2
1  2  B
2  3  C
3  4  D
4  5  E
> df2<-data.frame(c3=LETTERS[c(2:3,20:23)],c4=sample(1:100,size=6))
> df2c3 c4
1  B 62
2  C 20
3  T 29
4  U 42
5  V 60
6  W 65
#left_join(df1,df2,by=c('c2'=='c3')):df1左连接于df2 
> df1 %>% left_join(df2,by=c('c2'='c3'))c1 c2 c4
1  2  B 62
2  3  C 20
3  4  D NA
4  5  E NA
> df1 %>% right_join(df2,by=c('c2'='c3'))c1 c2 c4
1  2  B 62
2  3  C 20
3 NA  T 29
4 NA  U 42
5 NA  V 60
6 NA  W 65
> df1 %>% full_join(df2,by=c('c2'='c3'))c1 c2 c4
1  2  B 62
2  3  C 20
3  4  D NA
4  5  E NA
5 NA  T 29
6 NA  U 42
7 NA  V 60
8 NA  W 65
> df1 %>% inner_join(df2,by=c('c2'='c3'))c1 c2 c4
1  2  B 62
2  3  C 20

二.tidyr

1.列的分裂

> library(tidyr)
> df3<-data.frame(c5=paste(letters[1:3],1:3,sep="-"),
+ c6=paste(letters[1:3],1:3,sep="."),
+ c4=c("B","B","B"),
+ c3=c("H","M","L"))
> df3c5  c6 c4 c3
1 a-1 a.1  B  H
2 b-2 b.2  B  M
3 c-3 c.3  B  L
> df4<-df3%>%
+ separate(col=c5,sep="-",into=c("c7","c8"),remove=F)%>%
+ separate(col=c6,sep="\\.",into=c("c9","c10"),remove=T)
#\\表示转义字符
> df4c5 c7 c8 c9 c10 c4 c3
1 a-1  a  1  a   1  B  H
2 b-2  b  2  b   2  B  M
3 c-3  c  3  c   3  B  L

2.列的合并

> df4%>%
#remove表示将原来操作的列保留下来
+ unite(col="c11",c("c7","c8"),sep="_",remove=F)%>%
+ unite(col="c12",c("c9","c10"),sep=".",remove=T)c5 c11 c7 c8 c12 c4 c3
1 a-1 a_1  a  1 a.1  B  H
2 b-2 b_2  b  2 b.2  B  M
3 c-3 c_3  c  3 c.3  B  L

个人以为以下两个函数特别重要,特别有用,特别是在绘制线性图的时候

宽数据:列数变多了,names_from,表示列名的来源,value_from(),表示列值来源

从长数据到宽数据为from

长数据:行数变多了,names_to,表示列名加入到行中的去向,value_from(),表示列值加入到行中的去向,从宽数据到长数据为to

3.宽数据转长数据

> set.seed(42)
> df5<-data.frame(time=rep(2011:2013,each=3),
+ area=rep(letters[1:3],times=3),
+ pop=sample(100:1000,9),
+ den=round(rnorm(9,mean=3,sd=0.1),2),
+ mj=sample(8:12,9,replace = T))
#replace=T,有放回的取
> df5time area pop  den mj
1 2011    a 660 2.99 12
2 2011    b 420 3.15 12
3 2011    c 252 2.99 11
4 2012    a 173 3.20  9
5 2012    b 327 2.99 11
6 2012    c 245 3.13 10
7 2013    a 733 3.23  9
8 2013    b 148 2.86  8
9 2013    c 227 2.97  9> df6<-df5%>%
#将最后三列数据合并为一列
+ pivot_longer(cols=-c(1:2),
#列名称
+ names_to="varb",
#列值
+ values_to="value")
> df6
# A tibble: 27 × 4time area  varb   value<int> <chr> <chr>  <dbl>1  2011 a     pop   660   2  2011 a     den     2.993  2011 a     mj     12   4  2011 b     pop   420   5  2011 b     den     3.156  2011 b     mj     12   7  2011 c     pop   252   8  2011 c     den     2.999  2011 c     mj     11   
10  2012 a     pop   173   
# ℹ 17 more rows
# ℹ Use `print(n = ...)` to see more rows
> 

4.长数据转宽数据

> df6%>%
+ pivot_wider(names_from=c(area,varb),values_from = value)
# A tibble: 3 × 10time a_pop a_den  a_mj b_pop b_den  b_mj c_pop c_den  c_mj<int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1  2011   660  2.99    12   420  3.15    12   252  2.99    11
2  2012   173  3.2      9   327  2.99    11   245  3.13    10
3  2013   733  3.23     9   148  2.86     8   227  2.97     9
> 

相关文章:

R语言列操作函数

目录 一.dplyr包 1.新增变量和变量重新赋值 2.筛选行 3.筛选列 4.分组计算 5.管道操作符 6.连接数据框 二.tidyr 1.列的分裂 2.列的合并 3.宽数据转长数据 4.长数据转宽数据 一.dplyr包 1.新增变量和变量重新赋值 > head(ToothGrowth)len supp dose 1 4.2 …...

【Unity】VS Code 没有自动补全 MonoBehaviour 的方法

正常来说&#xff0c;在VS Code 输入类似 OnTriggerEnter2D等方法名时&#xff0c;VS Code会根据已经输入的前缀自动提示相关方法。 在不正常的情况下&#xff0c;根据StackOverFlow上面的回答&#xff0c;依次试过了 安装 .NET SDK安装 .NET Framework Dev PackVS Code安装 …...

计算机竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 毕业设计…...

大厂面试 | 百度一面,顶不住

题目来源&#xff1a;https://www.nowcoder.com/feed/main/detail/d39aabc0debd4dba810b4b9671d54348 前文 本期是【捞捞面经】系列文章的第 2 期&#xff0c;持续更新中…。&#xff08;更多与往期下方仓库直达&#xff09; 《捞捞面经》系列正式开始连载啦&#xff0c;据说看…...

c++线程

pthread(部分内容来自菜鸟教程) 创建线程 创建一个 POSIX 线程&#xff1a; #include <pthread.h> pthread_create (thread, attr, start_routine, arg) pthread_create 创建一个新的线程&#xff0c;并让它可执行。 参数&#xff1a; thread &#xff1a;指向线程标…...

【Docker】02-安装mysql

参考教程&#xff1a; https://www.bilibili.com/video/BV1Qa4y1t7YH/?p5&spm_id_frompageDriver&vd_source4964ba5015a16eb57d0ac13401b0fe77 docker安装Mysql 1、拉取最新版本的镜像 docker pull mysq:latestl 2、运行mysql服务 docker run --name mysql -e MYSQL_…...

JAVA每日小知识(关于excel下载时插入和stream流遍历优化)

1、在windows系统下启动rocketmq操作&#xff1a; 在bin目录下使用cmd 分别输入 start mqnamesrv.cmd start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnabletrue 2、在stream流中需要new对象时&#xff0c;可能会出现new很多对象堆积在堆中&#xff0c;这是需要用try,…...

阿里后端开发:抽象建模经典案例

0.引言 在互联网行业&#xff0c;软件工程师面对的产品需求大都是以具象的现实世界事物概念来描述的&#xff0c;遵循的是人类世界的自然语言&#xff0c;而软件世界里通行的则是机器语言&#xff0c;两者间跨度太大&#xff0c;需要一座桥梁来联通&#xff0c;抽象建模便是打…...

【车载以太网测试从入门到精通】——DoIP BootLoader刷写测试(含CAPL源码)

系列文章目录 文章目录 系列文章目录前言一、DoIP刷写环境搭建二、DoIP刷写工程使用方法三、DoIP刷写CAPL源码四、刷写工程下载链接前言 DoIP概述: DoIP(Diagnostic communication over InternetProtocol),基于IP网络的汽车诊断协议。DoIP技术可实现本地诊断、远程诊断、空…...

RK开发板的USB连接(Ubuntu)

一、安装连接工具 sudo apt-get install putty 二、启动putty工具 sudo putty 三、连接usb&#xff0c;并查看相关的信息 # 查看接入的是否有usb ls /dev/tty* 显示如下&#xff1a;&#xff08;含有usb接口&#xff1a; /dev/ttyUSB0&#xff09; /dev/tty /dev/tty23 /d…...

Redis-Cluster集群的部署(详细步骤)

一、环境准备 本次实操为三台机器&#xff0c;关闭防火墙和selinux 注:规划架构两种方案&#xff0c;一种是单机多实例&#xff0c;这里我们采用多机器部署 三台机器&#xff0c;每台机器上面两个redis实例&#xff0c;一个master一个slave&#xff0c;第一列做主库&#xff…...

Vulnhub: Hogwarts: Bellatrix靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.228 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.228访问80端口 查看源码&#xff0c;提示ikilledsiriusblack.php和文件包含的参数名file 漏洞利用 ikilledsiriusblack.p…...

机器学习(吴恩达第一课)

课程链接 文章目录 第一周1、机器学习定义2、监督学习(Supervised learning)1、回归(Regression)2、分类(Classification) 3、无监督学习(Unsupervised learning)4、线性回归模型5、代价函数6、梯度下降(Gradient descent)1、学习率2、用于线性回归的梯度下降 第二周(多维特征…...

固定资产管理怎么改革

固定资产管理改革需要考虑以下几个方面&#xff1a; 建立完善的管理制度和流程&#xff1a;制定固定资产管理的规章制度&#xff0c;明确各部门的职责和任务&#xff0c;规范资产采购、登记、领用、保管、维修、报废等流程。 采用先进的资产管理软件&#xff1a;通过采用先进的…...

【js】防抖和节流的使用场景和区别:

文章目录 一、防抖 &#xff08;多次触发 只执行最后一次&#xff09;二、节流 &#xff08;规定时间内 只触发一次&#xff09;三、防抖和节流的使用场景【1】防抖&#xff08;debounce&#xff09;【2】节流&#xff08;throttle&#xff09; 一、防抖 &#xff08;多次触发 …...

Blazor前后端框架Known-V1.2.14

V1.2.14 Known是基于C#和Blazor开发的前后端分离快速开发框架&#xff0c;开箱即用&#xff0c;跨平台&#xff0c;一处代码&#xff0c;多处运行。 Gitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;https://github.com/known/Known 概述 基于C#和Blazo…...

港陆证券:五日线破位怎么看?

在股票交易中&#xff0c;五日线是个重要的技术指标之一&#xff0c;它能够反映出最近的商场趋势。假如五日线破位&#xff0c;这意味着商场呈现了趋势反转&#xff0c;出资者需求注重趋势改动&#xff0c;并采取相应的出资战略。 首先&#xff0c;咱们来看看五日线破位的原因…...

睿趣科技:抖音小店多久可以做起来

随着社交媒体的迅猛发展&#xff0c;抖音成为了全球最受欢迎的短视频平台之一&#xff0c;吸引了数以亿计的用户。在抖音上&#xff0c;人们不仅可以分享自己的生活、才艺和创意&#xff0c;还可以创业经营抖音小店。但是&#xff0c;很多人都想知道&#xff0c;一个抖音小店到…...

onnx 模型切割掉conv后面的节点,设置输出层名称和最后节点名称一致,设置输出层shape和输出节点一致.

某些模型最后卷积层之后的算子不适合在推理引擎里面跑&#xff0c;切割掉conv后面的算子&#xff0c;在cpu上实现有比较好的性能&#xff0e; 包含&#xff1a; &#xff11;&#xff0e;获取onnx中间节点的shape的示例 &#xff12;&#xff0e;增加onnx模型输出&#xff0c;设…...

泛型的学习

泛型深入 泛型&#xff1a;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查 泛型的格式&#xff1a;<数据类型> 注意&#xff1a;泛型只能支持引用数据类型 //没有泛型的时候&#xff0c;集合如何存储数据//如果我们没有给集合指定类型&#xff0c;默认认为…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

python打卡第47天

昨天代码中注意力热图的部分顺移至今天 知识点回顾&#xff1a; 热力图 作业&#xff1a;对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图&#xff0c;展示模…...