当前位置: 首页 > 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;默认认为…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

PH热榜 | 2025-06-08

1. Thiings 标语&#xff1a;一套超过1900个免费AI生成的3D图标集合 介绍&#xff1a;Thiings是一个不断扩展的免费AI生成3D图标库&#xff0c;目前已有超过1900个图标。你可以按照主题浏览&#xff0c;生成自己的图标&#xff0c;或者下载整个图标集。所有图标都可以在个人或…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法&#xff1a;数据与控制信息的结构或格式&#xff0c;如同语言中的语法规则语义&#xff1a;控制信息的具体含义和响应方式&#xff0c;规定通信双方"说什么"同步&#xff1a;事件执行的顺序与时序…...