【R语言】数据操作
一、查看和编辑数据
1、查看数据
直接打印到控制台
x <- data.frame(a=1:20, b=21:30)
x

View()函数
此函数可以将数据以电子表格的形式进行展示。
用reshape2包中的tips进行举例:
library("reshape2")
View(tips)

head()函数
查看前几行数据,参数n表示需要查看的行数,默认为6

tail()函数
查看后几行数据,参数n表示需要查看的行数,默认为6

2、编辑数据
fix()函数
数据较少时,可以用此函数来编辑数据。使用时,会出现如下所示的一个弹窗,可以直接在这上面编辑数据。
当数据量特别大时,不适宜用此方法。
fix(tips)

edit()函数
使用此函数,会生成一个新的数据,如果没有将新数据赋值给变量,它将直接打印到控制台。使用时,也会出现如下所示的一个弹窗,可以直接在这上面编辑数据。
当数据量特别大时,不适宜用此方法。
edit(tips)

二、筛选数据
subset()函数
此函数可对向量、矩阵和数据框提取子集,它允许直接使用列名或变量名,使得相较于中括号来说可读性更强。
以下通过reshape2包中的tips数据集进行举例:
# 筛选tips数据集中,星期天消费大于40美元,小费大于5美元,且不吸烟的男性买单
# 方法一:用中括号
tips[tips$total_bill > 20 &tips$tip > 5 &tips$sex == "Male" &tips$smoker == "No" &tips$day == "Sun",c("total_bill", "tip", "sex", "smoker", "day")]
# 方法二:使用subset()函数进行筛选
subset(tips,subset = total_bill > 20 & tip > 5 &sex == "Male" &smoker == "No" &day == "Sun",select = c("total_bill", "tip", "sex", "smoker", "day"))

将上述方法一进行改进:使用with()函数,它的作用是对当前数据构建一个环境,并在该环境中计算表达式。
with(tips,tips[total_bill > 20 &tip > 5 &sex == "Male" &smoker == "No" &day == "Sun",c("total_bill", "tip", "sex", "smoker", "day")])

sample()函数:随机抽样
此函数的3个重要参数:
- size:抽样数量
- replace:是否有放回地抽样
- prob:按照一定的概率进行抽样
x <- letters
sample(x, size=12)y <- array(LETTERS[1:24], dim=c(3,4,2))
sample(y,size=12)

如果对数据框和列表使用sample()函数,那么得到的结果是对列或元素的随机抽样。对数据框来说,希望得到对行的随机抽样,所以需要先对行号随机抽样,然后选取相应的行。
对列表进行随机抽样:
x <- list(a = c(1,3,4), b = letters, c=3:15, d=month.abb)
x
sample(x, size=3)

对数据框进行随机抽样:
tips[sample(1:nrow(tips), 3),]

三、合并数据
paste()和paste0()函数
将向量以字符串的形式拼接起来。
c()函数
将几个向量合并为更大的向量或列表
data.frame()函数
合并数据框。
cbind()函数
按列合并
x <- tips[,c(1,2)]
head(x)
y <- tips[,c(5,6)]
head(y)
z <- cbind(x,y)
head(z)

rbind()函数
按行合并,且在合并时数据的列名称必须一样,但对列的顺序没要求。
x <- tips[sample(1:nrow(tips), 100),]
head(x)
y <- tips[sample(1:nrow(tips), 50),][,7:1] # y的列名称顺序与x相反
head(y)
z <- rbind(x,y)
head(z)

merge()函数
# 构建作者信息表
authors <- data.frame(name = I(c("Tukey", "Venables", "Tierney", "Ripley", "McNeil")),nationality = c("US", "Australia", "US", "UK", "Australia"),deceased = c("yes", rep("no", 4)))
authors
authors.new <- within(authors,{ surname <- name; rm(name) })
authors.new # 构建著作信息表
books <- data.frame(name = I(c("Tukey", "Venables", "Tierney","Ripley", "Ripley", "McNeil", "R Core")),other.author = c(NA, "Ripley", NA, NA, NA, NA,"Venables & Smith"),title = c("Exploratory Data Analysis","Modern Applied Statistics with S-PLUS","LISP-STAT","Spatial Statistics", "Stochastic Simulation","Interactive Data Analysis","An Introduction to R"),publishers = c("Addison-Wesley","Springer","Wiley-Interscience","Springer","Wiley-Interscience","Wiley","Samurai Media Limited"),year = c(1977,1994,1990,1988,2006,1992,2015))
books
合并有相同列名的数据框
merge(authors,books,by = "name")

合并没有相同列名的数据框
merge(authors.new,books,by.x = "surname",by.y = "name")

四、分组和汇总
cut()函数
x <- rnorm(20,10,5)
# 按c(min(x),5,10,15,max(x))区间将x分成4个区间(组)
# include.lowest表示第一组是否包含最小值
cut(x,breaks = c(min(x),5,10,15,max(x)),include.lowest = T)# 可以为每一个组赋予标签
cut(x,breaks = c(min(x),5,10,15,max(x)),labels = c("第一组","第二组","第三组","第四组"),include.lowest = T)

# 实际应用中往往是在数据框中生成新列
a <- data.frame(x = x)
a$y <- cut(a$x,breaks = c(min(a$x),5,10,15,max(a$x)),labels = c("第一组","第二组","第三组","第四组"),include.lowest = T)
head(a)

split()函数
相关文章:
【R语言】数据操作
一、查看和编辑数据 1、查看数据 直接打印到控制台 x <- data.frame(a1:20, b21:30) x View()函数 此函数可以将数据以电子表格的形式进行展示。 用reshape2包中的tips进行举例: library("reshape2") View(tips) head()函数 查看前几行数据&…...
【C++】2.高并发内存池 -- 如何设计一个定长内存池
博客主题:如何设计一个定长内存池 个人主页:https://blog.csdn.net/sobercq CSDN专栏:https://blog.csdn.net/sobercq/category_12884309.html Gitee链接:https://gitee.com/yunshan-ruo/high-concurrency-memory-pool 文章目录 前…...
Redis --- 使用Feed流实现社交平台的新闻流
要实现一个 Feed 流(类似于社交媒体中的新闻流),通常涉及以下几个要素: 内容发布:用户发布内容(例如文章、状态更新、图片等)。内容订阅:用户可以订阅其他用户的内容,获…...
React中key值的正确使用指南:为什么需要它以及如何选择
React中key值的正确使用指南:为什么需要它以及如何选择 一、key值的基本概念二、如何选择合适的key值1. 数据来源决定key策略2. key值的三大核心要求 三、React为何需要key值?1. 虚拟DOM优化机制2. 状态维护机制 四、常见误区及解决方案1. 索引作为key的…...
在Debian 12上安装VNC服务器
不知道什么标题 可以看到这个文章是通过豆包从国外网站copy的,先这样写着好了,具体的我有时间再补充,基本内容都在这里了。 在Debian 12上安装VNC服务器 简介 VNC(Virtual Network Computing,虚拟网络计算…...
游戏引擎学习第88天
仓库:https://gitee.com/mrxiao_com/2d_game_2 调查碰撞检测器中的可能错误 在今天的目标是解决一个可能存在的碰撞检测器中的错误。之前有人提到在检测器中可能有一个拼写错误,具体来说是在测试某个变量时,由于引入了一个新的变量而没有正确地使用它&…...
c++中priority_queue的应用及模拟实现
1.介绍 priority_queue 是一种数据结构,它允许你以特定的顺序存储和访问元素。在 C 标准模板库(STL)中,priority_queue 是一个基于容器适配器的类模板,它默认使用 std::vector 作为底层容器,并且默认使用最…...
深度学习篇---计算机视觉任务模型的剪裁、量化、蒸馏
文章目录 前言第一部分:计算机视觉任务图像分类特点 图像识别特点 目标检测特点 图像分割子任务特点 第二部分:模型剪裁、量化、蒸馏模型剪裁1.权重剪裁2.结构剪裁3.迭代剪裁 模型量化1.对称量化2.非对称量化3.动态量化4.静态量化 知识蒸馏1.训练教师网络…...
java-关键字(final,static)
关键字 final 和 static 是两个常用的关键字,它们分别用于不同的场景,具有不同的作用。 final final 关键字用于表示某个实体是不可变的。它可以应用于变量、方法和类。 final 变量 当 final 用于变量时,表示该变量一旦被初始化后&#…...
游戏引擎 Unity - Unity 设置为简体中文、Unity 创建项目
Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...
JDK17主要特性
JDK 17,也被称为Java 17或Java Platform, Standard Edition 17,是Java编程语言的第十七个主要版本,由Oracle公司在2021年9月发布。Java 17是一个长期支持(LTS,Long-Term Support)版本,这意味着它…...
将OneDrive上的文件定期备份到移动硬盘
背景: 我在oneDrive上存了很多文件,分布在多个文件夹中,也有套了好几层文件夹的情况。我希望每隔一段时间,将oneDrive上的所有文件向移动硬盘上拷贝一份,但是我只想将距离上一次向移动硬盘拷贝的文件相比,发…...
【Elasticsearch】geohex grid聚合
在 Elasticsearch 中,地理边界过滤是一种用于筛选地理数据的技术,它可以根据指定的地理边界形状(如矩形、多边形等)来过滤符合条件的文档。这种方法在地理空间数据分析中非常有用,尤其是在需要将数据限制在特定地理区域…...
crewai框架第三方API使用官方RAG工具(pdf,csv,json)
最近在研究调用官方的工具,但官方文档的说明是在是太少了,后来在一个视频里看到了如何配置,记录一下 以PDF RAG Search工具举例,官方文档对于自定义模型的说明如下: 默认情况下,该工具使用 OpenAI 进行嵌…...
算法 哈夫曼树和哈夫曼编码
目录 前言 一,二进制转码 二,哈夫曼编码和哈夫曼树 三,蓝桥杯 16 哈夫曼树 总结 前言 这个文章需要有一定的树的基础,没学过树的伙伴可以去看我博客树的文章 当我们要编码一个字符串转成二进制的时候,我们要怎么…...
TCP 丢包恢复策略:代价权衡与优化迷局
网络物理层丢包是一种需要偿还的债务,可以容忍低劣的传输质量,这为 UDP 类服务提供了空间,而对于 TCP 类服务,可以用另外两类代价来支付: 主机端采用轻率的 GBN 策略恢复丢包,节省 CPU 资源,但…...
Sumatra PDF:小巧免费,满足多样阅读需求
Sumatra PDF是一款完全免费的本地阅读器软件,以小巧的体积和全面的功能受到用户青睐。如今,它已经更新到3.3版本,带来了更多实用功能,尤其是新增的注释功能,值得我们再次关注。 软件特色 轻量级体积:压缩…...
vue2-给data动态添加属性
vue2-给data动态添加属性 1. 问题的来源 在VUe2中(VUE3中使用了proxy,及时动态添加也能实现响应式),如果我们动态给data添加一个属性,会发现视图没有同步更新举个例子我们通过v-for遍历data中的一个属性list…...
TiDB 分布式数据库多业务资源隔离应用实践
导读 随着 TiDB 在各行业客户中的广泛应用 ,特别是在多个业务融合到一套 TiDB 集群中的场景,各企业对集群内多业务隔离的需求日益增加。与此同时,TiDB 在多业务融合场景下的资源隔离方案日趋完善,详情可参考文章 《你需要什么样的…...
105,【5】buuctf web [BJDCTF2020]Easy MD5
进入靶场 先输入试试回显 输入的值成了password的内容 查看源码,尝试得到信息 什么也没得到 抓包,看看请求与响应里有什么信息 响应里得到信息 hint: select * from admin where passwordmd5($pass,true) 此时需要绕过MD5()函…...
BFS(广度优先搜索)——搜索算法
BFS,也就是广度(宽度)优先搜索,二叉树的层序遍历就是一个BFS的过程。而前、中、后序遍历则是DFS(深度优先搜索)。从字面意思也很好理解,DFS就是一条路走到黑,BFS则是一层一层地展开。…...
33.Word:国家中长期人才发展规划纲要【33】
目录 NO1.2样式 NO3 图表 NO4.5.6 开始→段落标记视图→导航窗格→检查有无遗漏 NO1.2样式 F12/另存为:Word.docx:考生文件夹样式的复制样式的修改 样式的应用(没有相似/超级多的情况下)——替换 [ ]通配符&#x…...
gym-anytrading
参考:https://github.com/upb-lea/gym-electric-motor AnyTrading 是一组基于 reinforcement learning (RL) 的 trading algorithms(交易算法)的 OpenAI Gym 环境集合。 该项目主要用于foreign exchange (FOREX) 和 stock markets (股票市场)…...
如何自定义软件安装路径及Scoop包管理器使用全攻略
如何自定义软件安装路径及Scoop包管理器使用全攻略 一、为什么无法通过WingetUI自定义安装路径? 问题背景: WingetUI是Windows包管理器Winget的图形化工具,但无法直接修改软件的默认安装路径。原因如下: Winget设计限制…...
私有化部署 DeepSeek + Dify,构建你的专属私人 AI 助手
私有化部署 DeepSeek Dify,构建你的专属私人 AI 助手 概述 DeepSeek 是一款开创性的开源大语言模型,凭借其先进的算法架构和反思链能力,为 AI 对话交互带来了革新性的体验。通过私有化部署,你可以充分掌控数据安全和使用安全。…...
Java 进阶 01 —— 5 分钟回顾一下 Java 基础知识
Java 进阶 01 —— 5 分钟回顾一下 Java 基础知识 Java 生态圈Java 跨平台的语言 Java 虚拟机规范JVM 跨语言的平台多语言混合编程两种架构 举例 JVM 的生命周期 虚拟机的启动虚拟机的执行虚拟机的退出 JVM 发展历程 Sun Classic VMExact VMHotSpotBEA 的 JRockitIBM 的 J9 …...
V103开发笔记1-20250113
2025-01-13 一、应用方向分析 应用项目: PCBFLY无人机项目(包括飞控和手持遥控器); 分析移植项目,应用外设资源包括: GPIO, PWM,USART,GPIO模拟I2C/SPI, ADC,DMA,USB等; 二、移植项目的基本…...
在 Spring Boot 项目中,bootstrap.yml 和 application.yml文件区别
在 Spring Boot 项目中,bootstrap.yml 和 application.yml 是两个常用的配置文件,它们的作用和加载顺序有所不同。以下是它们的详细说明: 1. bootstrap.yml 作用: bootstrap.yml 是 Spring Cloud 项目中的配置文件,用于…...
DeepSeek研究员在线爆料:R1训练仅用两到三周,春节期间观察到R1 zero强大进化
内容提要 刚刚我注意到DeepSeek研究员Daya Guo回复了网友有关DeepSeek R1的一些问题,以及接下来的公司的计划,只能说DeepSeek的R1仅仅只是开始,内部研究还在快速推进,DeepSeek 的研究员过年都没歇,一直在爆肝推进研究…...
Java进阶文件输入输出实操(图片拷贝)
Java进阶文件输入输出实操(图片拷贝) 把某个目录下的全部图片,全部拷贝到另外一个目录 package test; import domee.chapter6_7.B; import java.io.*; public class Ex10_10 { public static void main(String[] args) throws IOException { …...
