R语言学习笔记9-数据过滤-分组-融合
R语言学习笔记9-数据过滤-分组-融合
- 数据过滤
- 基础数据过滤
- 条件筛选数据
- 使用dplyr包进行数据操作
- select 函数
- filter 函数
- subset函数
- 数据分组
- 使用split()进行数据分组
- 使用dplyr包进行数据分组
- 使用data.table包进行数据分组
- 数据融合
- 使用merge()进行数据融合
- 使用dplyr包进行数据融合
- 使用data.table包进行数据融合
数据过滤
数据选择是指从数据结构(如数据框、列表等)中提取、筛选或操作数据的过程。从数据集中提取符合条件的行或列。这在数据分析和清洗过程中非常常见,可以从大量数据中快速筛选出需要的部分,R提供了包括基础的索引、逻辑条件、函数式编程方法等实现
基础数据过滤
使用方括号 [ ] 进行基本索引和切片
# 创建一个示例数据框
df <- data.frame(name = c("Alice", "Bob", "Charlie"),age = c(25, 30, 28),gender = c("F", "M", "M"),score = c(88, 92, 85)
)# 选择整列数据
df$name # 选择名为"name"的列# 选择多列数据
df[, c("name", "score")] # 选择名为"name"和"score"的列# 选择某行某列的数据
df[2, "age"] # 选择第2行、"age"列的数据# 切片选择多行多列数据
df[1:2, c("name", "age")] # 选择第1行到第2行的"name"和"age"列的数据
条件筛选数据
使用逻辑条件进行数据筛选
# 使用逻辑条件筛选数据
df[df$age > 25, ] # 筛选年龄大于25岁的行数据# 多条件筛选
df[df$age > 25 & df$gender == "M", ] # 筛选年龄大于25岁且性别为男性的行数据
使用dplyr包进行数据操作
# 加载 dplyr 包
library(dplyr)# 示例数据框
df <- data.frame(name = c("Alice", "Bob", "Charlie"),age = c(25, 30, 28),gender = c("F", "M", "M"),score = c(88, 92, 85)
)# 使用 dplyr 筛选和操作数据
# 选择特定列
df_selected <- df %>%select(name, age)# 条件筛选
df_filtered <- df %>%filter(age > 25)# 多条件筛选
df_multi_filter <- df %>%filter(age > 25, gender == "M")# 按条件计算新列
df_calculated <- df %>%mutate(score_adjusted = score * 1.1) # 添加一个新的列,表示成绩调整后的值# 按组计算汇总统计
df_summary <- df %>%group_by(gender) %>%summarise(mean_age = mean(age), max_score = max(score)) # 按性别计算平均年龄和最高分print(df_selected)
print(df_filtered)
print(df_multi_filter)
print(df_calculated)
print(df_summary)
select 函数
select 函数用于选择数据框中的特定列。可按照列名或列索引来指定需要保留的列
# 创建一个示例数据框
df <- data.frame(A = c(1, 2, 3, 4, 5),B = c("a", "b", "c", "d", "e"),C = c(TRUE, FALSE, TRUE, FALSE, TRUE)
)# 使用 select 函数选择列 A 和 C
library(dplyr)
selected_df <- select(df, A, C)# 打印选择后的数据框
print(selected_df)
输出:
A C
1 1 TRUE
2 2 FALSE
3 3 TRUE
4 4 FALSE
5 5 TRUE
filter 函数
filter 函数用于根据指定的条件筛选数据框中的行
# 使用 filter 函数筛选符合条件的行
filtered_df <- filter(df, A > 2)# 打印筛选后的数据框
print(filtered_df)
输出:
A B C
1 3 c TRUE
2 4 d FALSE
3 5 e TRUE
subset函数
subset()函数可以根据行和列的逻辑条件从数据框中选择子集
# 使用 subset 函数筛选数据
# 筛选年龄大于25岁的行
filtered_df <- subset(df, age > 25)# 多条件筛选
filtered_df <- subset(df, age > 25 & gender == "M")# 查看处理后的数据
print(filtered_df)输出结果:name age gender score
2 Bob 30 M 92
3 Charlie 28 M 85
数据分组
数据分组是指将数据集按照某个或多个变量的值进行划分,以便对每个分组进行独立的分析或操作。数据分组在处理具有分类特征的数据集时特别有用,可帮助我们理解不同类别或组别之间的数据特征和差异
使用split()进行数据分组
在基础R中,可使用split()函数来根据某个变量的值将数据分组
# 创建一个示例数据框
df <- data.frame(group = c('A', 'B', 'A', 'B', 'A', 'B'),value = c(1, 2, 3, 4, 5, 6)
)# 使用split()函数按group列的值分组
grouped_data <- split(df$value, df$group)# 查看分组结果
print(grouped_data)
输出结果会显示两个分组A和B,每个分组中包含对应的value值。
使用dplyr包进行数据分组
dplyr包是tidyverse系列包中的一个,它提供了非常强大的数据处理功能,包括数据分组。在dplyr中,可使用group_by()函数来进行数据分组
# 加载dplyr包
library(dplyr)# 示例数据框(同上)
df <- data.frame(group = c('A', 'B', 'A', 'B', 'A', 'B'),value = c(1, 2, 3, 4, 5, 6)
)# 使用group_by()函数按group列的值分组
grouped_df <- df %>% group_by(group)# 查看分组结构(不直接显示分组内容,但可用于后续操作)
str(grouped_df)# 对分组数据进行操作,例如计算每组的平均值
summarized_df <- grouped_df %>% summarise(mean_value = mean(value))# 查看操作结果
print(summarized_df)
group_by()函数将数据按group列的值进行了分组,但分组后的数据框grouped_df本身不会直接显示分组的内容。然而,这个分组结构可以在后续的操作中使用,例如在summarise()函数中计算每个分组的统计量
使用data.table包进行数据分组
# 加载data.table包
library(data.table)# 将数据框转换为data.table对象
dt <- as.data.table(df)# 使用[, by=]语法进行分组和操作
summarized_dt <- dt[, .(mean_value = mean(value)), by = group]# 查看操作结果
print(summarized_dt)
在data.table中,使用[, by=]的语法来进行分组操作。上面的代码计算了每个group的平均value值
数据融合
数据融合(或称数据合并)指的是将多个数据集按照某些条件或列进行连接,以便进行综合分析或处理。常见的数据融合方式包括基于列连接(merge)、基于行连接(bind)、以及使用特定关系操作符(如join)等
使用merge()进行数据融合
# 创建示例数据框
df1 <- data.frame(ID = c(1, 2, 3),Name = c("Alice", "Bob", "Charlie"),Score1 = c(85, 92, 78)
)df2 <- data.frame(ID = c(2, 3, 4),Score2 = c(88, 95, 80)
)# 使用merge()函数按照ID列进行数据融合
merged_df <- merge(df1, df2, by = "ID", all = TRUE) # 使用all = TRUE表示保留所有行# 查看融合后的数据
print(merged_df)
merge()函数按照ID列将df1和df2进行连接,结果包含了所有的ID,并将两个数据框中的数据合并在一起
使用dplyr包进行数据融合
dplyr包提供了更为简洁和灵活的数据处理方式,包括数据融合操作
# 加载dplyr包
library(dplyr)# 示例数据框(同上)
df1 <- data.frame(ID = c(1, 2, 3),Name = c("Alice", "Bob", "Charlie"),Score1 = c(85, 92, 78)
)df2 <- data.frame(ID = c(2, 3, 4),Score2 = c(88, 95, 80)
)# 使用dplyr的left_join()函数按照ID列进行左连接
merged_df <- left_join(df1, df2, by = "ID")# 查看融合后的数据
print(merged_df)
left_join()函数执行了按照ID列的左连接操作,即保留了df1中所有的行,并将df2中匹配的行数据合并到一起
使用data.table包进行数据融合
data.table是另一个效率高且功能强大的数据处理包,特别适用于大型数据集的操作
# 加载data.table包
library(data.table)# 示例数据框(同上)
df1 <- data.table(ID = c(1, 2, 3),Name = c("Alice", "Bob", "Charlie"),Score1 = c(85, 92, 78)
)df2 <- data.table(ID = c(2, 3, 4),Score2 = c(88, 95, 80)
)# 使用data.table的merge()函数按照ID列进行数据融合
merged_dt <- merge(df1, df2, by = "ID", all = TRUE)# 查看融合后的数据
print(merged_dt)
在data.table中,merge()函数的用法与基础R中的merge类似,但它在处理大数据时有更高的效率
相关文章:
R语言学习笔记9-数据过滤-分组-融合
R语言学习笔记9-数据过滤-分组-融合 数据过滤基础数据过滤条件筛选数据使用dplyr包进行数据操作select 函数filter 函数subset函数 数据分组使用split()进行数据分组使用dplyr包进行数据分组使用data.table包进行数据分组 数据融合使用merge()进行数据融合使用dplyr包进行数据融…...
GESP CCF C++ 八级认证真题 2024年6月
第 1 题 GESP活动期间,举办方从获胜者ABCDE五个人中选出三个人排成一队升国旗,其中A不能排在队首,请问 有多少种排法? A.24 B.48 C.32 D.12 第 2 题 7进制数235转换成3进制数是( )。 A. 11121 B. 11…...
Spring Boot 单元测试什么时候需要添加 @RunWith
建立 Spring Boot 单元测试方法一般依赖于 JUnit4 或 JUnit5 框架。 在高版本的 Spring Boot 中,一般默认用的是 JUnit5。此时通过添加 SpringBootTest 注解,即可成功注入相关的 bean 对象,并进行测试。 import org.junit.jupiter.api.Test…...
鸿蒙OpenHarmony Native API【HiLog】
HiLog Overview Description: HiLog模块实现日志打印功能。 开发者可以通过使用这些接口实现日志相关功能,输出日志时可以指定日志类型、所属业务领域、日志TAG标识、日志级别等。 syscap SystemCapability.HiviewDFX.HiLog Since: 8 Summary Files File …...
Pycharm 和虚拟环境的那些事?
背景: 我既有 python 又有Anaconda Pycharm新建虚拟环境: 只说两种方式 通过Virualenv Environment新建: 这里我们勾选上 Make available to all projects ,之后点击🆗 然后可以发现只有非常少的包,因为没有勾选继承 编译器的包 创建的虚拟环境一般目录如下&…...
rancher2里面的containerd的使用
rancher2使用containerd了,在node上去跑docker命令找不到以前的那些pod了,查了很久才设置好crictl的配置 kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP O…...
Python数据风险案例54——人工智能热门概念股爬虫分析其价值(三因子模型)
案例背景 人工智能概念如火如荼的夏天,在这个2024年,我觉得需要提早布局一下这个概念。所以我们找一下A股里面人们的人工智能概念股,然后分析他们的数据应用三因子模型,也就是最经典的资本资产定价模型的衍生版去研究他们各自的投…...
【HarmonyOS开发】Navigation使用
简介 Navigation是路由容器组件,包括单栏(Stack)、分栏(Split)和自适应(Auto)三种显示模式。适用于模块内和跨模块的路由切换。 在页面跳转时,应该使用页面路由router,在页面内的页面跳转时,建议使用Navigation达到更好的转场动效…...
计算机网络参考模型与5G协议
目录 OSI七层参考模型OSI模型vsTCP/IP模型TCP/IP协议族的组成 OSI七层参考模型 分层功能应用层网络服务与最终用户的一个接口表示层数据的表示,安全,压缩会话层建立,管理,终止会话传输层定义传输数据的协议端口号,以及流控和差错校验网络层进行逻辑地址寻址,实现不同网路之间的…...
docker自建rustdesk-server远程桌面
rustdesk简介 RustDesk 是一款可以平替 TeamViewer 的开源软件,旨在提供安全便捷的自建方案。 RustDesk 是一款功能齐全的远程桌面应用,具有以下特性: 支持 Windows、macOS、Linux、iOS、Android、Web 等多个平台。支持 VP8 / VP9 / AV1 …...
海外抖音黑屏是网络问题还是硬件问题?
随着海外抖音(TikTok)在全球范围内的普及,越来越多的用户开始体验这一短视频社交平台。然而,不少用户在使用过程中遇到了黑屏问题,这让人不禁疑惑:这究竟是网络问题还是硬件问题? 首先…...
为了实现接口缓存,专门写了个缓存库 f-cache-memory
问题起因 起因是某次发版之后,服务器接口压力过大,当场宕机,排查之后发现有个接口在首页被调十来次(六七年的老项目了,都是泪呀),后端反馈这个接口的sql很复杂,很耗性能,…...
actual combat 35 —— es
一、windows中es执行步骤 参考:https://blog.csdn.net/qq_21197507/article/details/115076913 下es安装包下es前端gitHub代码,然后npm -i安装,npm run start 启动安装kibana 二、遇到的问题 1. 第二步安装前端代码依赖报错 npm ERR! co…...
android R ext4 image打包脚本介绍
一、Android R打包指令使用介绍 (1)mkuserimg_mke2fs #./mkuserimg_mke2fs --help usage: mkuserimg_mke2fs [-h] [--android_sparse] [--journal_size JOURNAL_SIZE][--timestamp TIMESTAMP] [--fs_config FS_CONFIG][--product_out PRODUCT_OUT][--b…...
美式键盘 QWERTY 布局的来历
注:机翻,未校对。 The QWERTY Keyboard Is Tech’s Biggest Unsolved Mystery QWERTY 键盘是科技界最大的未解之谜 It’s on your computer keyboard and your smartphone screen: QWERTY, the first six letters of the top row of the standard keybo…...
ETL数据同步之DataX,附赠一套DataX通用模板
今天跟大家分享数据同步datax的模板,小伙伴们简单直接借鉴使用。 还记得上一篇关于大数据DS调度工具的分享嘛? 主流大数据调度工具DolphinScheduler之数据ETL流程-CSDN博客 里面的核心就是采用了DATAX的数据同步原理。 一,什么是DataX D…...
[论文笔记] CT数据配比方法论——1、Motivation
我正在写这方面的论文,感兴趣的可以和我一起讨论!!!!!! Motivation 1、探测原有模型的配比: 配比 与 ppl, loss, bpw, benchmark等指标 之间的关系。 2、效果稳定的配比:配比 与 模型效果 之间的规律。 Experiments 1、主语言(什么语言作为主语言,几种主语言?…...
某4G区域终端有时驻留弱信号小区分析
这些区域其实是长时间处于连接态的电信卡4G终端更容易出现。 出现问题时都是band1 100频点下发了针对弱信号的1650频点的连接态A4测量事件配置(其阈值为-106)。而这个条件很容易满足,一旦下发就会切到band3 1650频点。 而1650频点虽然下发ban…...
【体外诊断】ARM/X86+FPGA嵌入式计算机在免疫分析设备中的应用
体外诊断 信迈提供基于Intel平台、AMD平台、NXP平台的核心板、2.5寸主板、Mini-ITX主板、4寸主板、PICO-ITX主板,以及嵌入式准系统等计算机硬件。产品支持GAHDMI等独立双显,提供丰富串口、USB、GPIO、PCIe扩展接口等I/O接口,扩展性强…...
Linux上启动和停止jar
linux 后台运行jar 在Linux系统中,要想让jar包在后台运行,可以使用nohup命令和&符号。nohup命令可以使进程在后台不受挂起信号影响的执行,而&符号则是将任务放入后台执行。 以下是一个简单的命令示例,它将启动一个jar包…...
浏览器缓存:强缓存与协商缓存实现原理有哪些?
1、强缓存:设置缓存时间的,那么在这个时间内浏览器向服务器发送请求更新数据,但是服务器会让其从缓存中获取数据。 可参考:彻底弄懂强缓存与协商缓存 - 简书 2、协商缓存每次都会向浏览器询问,那么是怎么询问的呢&…...
持续集成04--Jenkins结合Gitee创建项目
前言 在持续集成/持续部署(CI/CD)的旅途中,Jenkins与版本控制系统的紧密集成是不可或缺的一环。本篇“持续集成03--Jenkins结合Gitee创建项目”将引导如何将Jenkins与Gitee(一个流行的Git代码托管平台)相结合ÿ…...
【Node.js基础02】fs、path模块
目录 一:fs模块-读写文件 1 加载fs模块对象 2 读制定文件内容文件 3 向文件中写入内容 二:path模块-路径处理 1 问题引入 2 __dirname内置变量 使用方法 一:fs模块-读写文件 fs模块封装了与本机文件系统交互方法和属性 1 加载fs模块…...
牛客TOP101:单链表的排序
文章目录 1. 题目描述2. 解题思路3. 代码实现 1. 题目描述 2. 解题思路 按我们以往的排序算法来看,针对链表来说都是太不合适,因为很多都会出现指针前移后移,后移还好说,前移对于链表来说就太难了,而且大部分都是某一个…...
数据可视化配色新工具,颜色盘多达2500+类
好看的配色,不仅能让图表突出主要信息,更能吸引读者,之前分享过很多配色工具,例如, 👉可视化配色工具:颜色盘多达3000+类,数万种颜色! 本次再分享一个配色工具pypalettes,颜色盘多达2500+类。 安装pypalettes pip install pypalettes pypalettes使用 第1步,挑选…...
SpringAI简单使用(本地模型+自定义知识库)
Ollama 简介 Ollama是一个开源的大型语言模型服务工具,它允许用户在本地机器上构建和运行语言模型,提供了一个简单易用的API来创建、运行和管理模型,同时还提供了丰富的预构建模型库,这些模型可以轻松地应用在多种应用场景中。O…...
为什么要从C语言开始编程
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!很多小伙伴在入门编程时。都…...
[数据集][目标检测]导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4635 标注数量(xml文件个数):4635 标注数量(txt文件个数):4635 标注…...
数据结构(稀疏数组)
简介 稀疏数组是一种数据结构,用于有效地存储和处理那些大多数元素都是零或者重复值的数组。在稀疏数组中,只有非零或非重复的元素会被存储,从而节省内存空间。 案例引入 假如想把下面这张表存入文件,我们会怎么做?…...
python 爬虫技术 第02节 基础复习
Python基础复习 Python 是一种高级、通用、解释型的编程语言,以其简洁的语法和强大的功能在数据科学、Web 开发、自动化脚本编写、机器学习等领域广泛使用。下面是一些 Python 基础概念的复习: 1. 数据类型 Python 支持多种内置数据类型,包…...
阿里云 做网站 百度开放云/百度指数免费查询
为大家分享一款专业的音乐标签及管理工具,Yate for mac主要用于标记和整理你的音频文件,你可以轻松编辑音乐文件的元标签数据,Yate for mac支持AIFF、DFF、FLAC、M4A、M4B、MP3、MP4等格式的音频文件,不管是自动还是手动标记文件都…...
网站备案需要什么/河北seo网络优化师
Description Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其…...
新闻网站哪个做的好/学网络与新媒体后悔死了
vim编辑模式下 没有ctrla 的 全选方式 然后del 切换到 命令模式 :%d 既可...
找别人做网站注意什么/百度一下你就知道123
在项目中为了美观,通常都会加上事件的点击效果,加图片很简单打,但是有时候应为特殊需求要加点击时的颜色效果,便记下来方法,以备不时之需 首先跟加图片的背景一样,在drawable里建一个xml文件 内容如下&am…...
做类似猪八戒网的网站/广告搜索引擎
文章目录1.sudo !!2.mtr 命令3.nl 命令4.shulf 和tree 、pstreeshulf 命令tree命令pstree 这个是进程按树形结构显示,显示当前进程以及相关子进程,输出信息跟“tree”类似5.last 命令6.curl ifconfig.me7.lsof -i:端口号8.cut 命令9.seq 命令11.关于 脚本…...
7b2 wordpress/幽默软文广告经典案例
1 测试背景说明之前的博客已经对Oracle 的闪回技术进行说明,如下:我们现在用的最多的还是闪回查询,但闪回查询有时间限制,超过了时间就无法查询到数据,此时就需要通过备份来查找需要的数据。 显然用备份的方式会麻烦很多。在Oracl…...