R语言学习笔记6-数据框

R语言学习笔记6-数据框

  • 数据框(DataFrame)介绍
  • 数据框用途
  • 创建数据框
  • 从矩阵创建数据框
  • 索引和切片
  • 添加和修改列
  • 数据框的预处理
  • 数据框的排序
  • 数据框的合并与拆分
  • 数据框的计算与汇总
  • 数据框的筛选
  • 处理缺失值
  • 应用函数处理数据
  • 重塑数据框
  • 使用 dplyr 进行数据框的管道操作
  • 数据框的时间序列操作
  • 大数据框的处理
  • 数据框的绘图
  • 数据框的文本处理
  • 数据框的连接与关联
    • 按行或列连接数据框
    • 按键值关联数据框
  • 数据框的条件处理与逻辑操作
    • 条件筛选
    • 逻辑操作
  • 数据框的汇总与统计分析
    • 分组汇总
    • 统计计算

数据框(DataFrame)介绍

数据框是R语言中用于存储和处理表格数据的重要数据结构。由行和列组成,每列可以包含不同类型的数据,但同一列中的数据类型必须相同。数据框中的每一列都有一个列名,用于标识数据的内容

数据框用途

1. 数据清洗与预处理: 在数据分析过程中,数据常常需要进行清洗和预处理,包括缺失值处理、数据转换、重命名变量等操作。数据框提供了丰富的函数和方法来进行这些操作,使数据达到分析要求的格式和质量
2. 数据分析与统计: 数据框可以通过内置的函数和外部包(如dplyr、tidyverse等)进行各种统计计算、汇总、分组操作和复杂的数据逻辑处理。这些操作可以从数据中提取有用信息、进行趋势分析、建立模型等
3. 数据可视化: R语言中的数据可视化包(如ggplot2)可以直接接受数据框作为输入,通过简单的代码生成高质量的统计图表。使得可以快速理解数据的特征和趋势

创建数据框

可使用 data.frame() 函数直接创建数据框

# 创建一个基础的数据框
df <- data.frame(Column1 = c(1, 2, 3),Column2 = c("A", "B", "C"),Column3 = c(TRUE, FALSE, TRUE)
)

从矩阵创建数据框

对于一个矩阵,可以使用 as.data.frame() 函数将其转换为数据框

# 创建一个矩阵
mat <- matrix(1:6, nrow = 2)
# 将矩阵转换为数据框
df_from_mat <- as.data.frame(mat)

索引和切片

可使用列名或行号进行索引和切片操作

# 选择指定列
selected_columns <- df[, c("Column1", "Column2")]# 选择指定行
selected_rows <- df[c(1, 3), ]# 使用列名选择
column1_values <- df$Column1
column1_values_alt <- df["Column1"]# 使用逻辑条件选择
filtered_data <- df[df$Column1 > 2, ]

添加和修改列

# 添加新列
df$NewColumn <- c(4, 5, 6)# 修改列的值
df$Column1 <- c(7, 8, 9)

数据框的预处理

对数据框进行重命名、类型转换和变量重编码等操作

# 变量重命名
names(df)[3] <- "NewName"# 修改变量类型
df$Column1 <- as.numeric(df$Column1)# 变量重编码
df$Column2[df$Column2 == "A"] <- "X"
df$Column2[df$Column2 == "B"] <- "Y"

数据框的排序

使用 order() 函数对数据框进行排序

# 按照 Column1 列升序排序
df_sorted <- df[order(df$Column1), ]

数据框的合并与拆分

# 列拼接
combined_df <- cbind(df1, df2)# 行拼接
combined_df <- rbind(df1, df2)# 根据标志进行列合并
merged_df <- merge(df1, df2, by = "ID")

数据框的计算与汇总

# 计算某列的均值
mean_value <- mean(df$Column1)# 分类汇总
summary_stats <- aggregate(df$Column1, by = list(df$Column2), mean)

数据框的筛选

# 条件筛选
subset_df <- subset(df, Column1 > 2)

处理缺失值

# 检查缺失值情况
missing_values <- is.na(df)# 删除含有缺失值的观测
df_no_missing <- na.omit(df)# 用指定数值填补缺失值
df$Column1[is.na(df$Column1)] <- 0

应用函数处理数据

使用 apply() 函数对数据框中的数据进行批量处理

# 使用 apply 函数计算某几列的均值
mean_values <- apply(df[, c("Column1", "Column2")], MARGIN = 2, mean)

重塑数据框

通过 reshape2 包中的函数如 melt() 和 dcast() 可以进行数据框的重塑操作,从长格式(long
format)到宽格式(wide format)的转换

library(reshape2)# 将数据框从宽格式变为长格式
melted_df <- melt(df, id.vars = c("ID", "Date"))# 将数据框从长格式变为宽格式
casted_df <- dcast(melted_df, ID ~ variable, value.var = "value")

使用 dplyr 进行数据框的管道操作

dplyr 包提供了一组功能强大的函数,用于数据框的快速操作,如选择、过滤、排序、汇总和变异等

library(dplyr)# 选择和筛选
selected_df <- df %>%select(Column1, Column2) %>%filter(Column1 > 2)# 分组和汇总
summary_df <- df %>%group_by(Column2) %>%summarize(mean_value = mean(Column1))

数据框的时间序列操作

对于时间序列数据,可以使用 zoo 或 xts 包来扩展数据框以支持时间索引和时间序列操作

library(zoo)# 创建时间序列数据框
dates <- as.Date(c("2023-01-01", "2023-01-02", "2023-01-03"))
ts_data <- zoo(df[, "Column1"], order.by = dates)

大数据框的处理

对于大数据集,可以使用 data.table 包来进行快速的数据框操作,特别是对于大量数据的高效处理和计算

library(data.table)# 将数据框转换为 data.table
dt <- as.data.table(df)# 使用 data.table 的快速操作
result <- dt[Column1 > 2, .(mean_value = mean(Column2)), by = Column3]

数据框的绘图

可使用 ggplot2 包将数据框中的数据可视化,创建高质量的统计图形

library(ggplot2)# 创建散点图
ggplot(df, aes(x = Column1, y = Column2)) +geom_point() +labs(title = "Scatter Plot", x = "Column1", y = "Column2")

数据框的文本处理

使用 stringr 或 tm 包进行数据框中文本数据的处理,如正则表达式匹配、文本清洗和词频统计等

library(stringr)# 使用 stringr 包处理文本列
df$TextColumn_cleaned <- str_replace_all(df$TextColumn, "[^[:alnum:][:space:]]", "")

数据框的连接与关联

按行或列连接数据框

# 按行连接(合并)
combined_rows <- rbind(df1, df2)# 按列连接(合并)
combined_columns <- cbind(df1, df2)

按键值关联数据框

# 根据共同的列(键)进行合并
merged_df <- merge(df1, df2, by = "key_column")# 使用 dplyr 包进行关联(左连接示例)
library(dplyr)
merged_df <- left_join(df1, df2, by = "key_column")

数据框的条件处理与逻辑操作

条件筛选

# 根据条件筛选数据
subset_df <- subset(df, Column1 > 2 & Column2 == "A")# 使用 dplyr 进行筛选
filtered_df <- df %>%filter(Column1 > 2, Column2 == "A")

逻辑操作

# 创建逻辑向量
logic_vector <- df$Column1 > 2# 使用逻辑向量选择数据
selected_df <- df[logic_vector, ]

数据框的汇总与统计分析

分组汇总

# 按照列进行分组,并计算每组的均值
summary_stats <- aggregate(df$Value, by = list(df$Category), FUN = mean)# 使用 dplyr 进行分组和汇总
summary_df <- df %>%group_by(Category) %>%summarize(mean_value = mean(Value))

统计计算

# 计算某列的均值
mean_value <- mean(df$Value)# 计算标准差
std_deviation <- sd(df$Value)# 计算频数统计
freq_table <- table(df$Category)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 WebSocket 进行实时数据传输

以下是使用 WebSocket 进行实时数据传输的一般步骤&#xff1a; 一、前端部分 &#xff08;一&#xff09;创建 WebSocket 连接 const socket new WebSocket(ws://your-server-url); 在上述代码中&#xff0c;将 ws://your-server-url 替换为您实际的服务器 WebSocket 地…

SvANet:微小医学目标分割网络,增强早期疾病检测

SvANet&#xff1a;微小医学目标分割网络&#xff0c;增强早期疾病检测 提出背景前人工作医学对象分割微小医学对象分割注意力机制 SvANet 结构图SvANet 解法拆解解法逻辑链 论文&#xff1a;SvANet: A Scale-variant Attention-based Network for Small Medical Object Segmen…

【JAVA poi-tl-ext 富文本转word】

富文本转word 环境使用poi-tl-ext的原因富文本转word代码 环境 jdk 1.8 <dependency><groupId>io.github.draco1023</groupId><artifactId>poi-tl-ext</artifactId><version>0.4.16</version> </dependency>poi-tl-ext已经包…

可灵重大升级!新增Web端上线、首尾帧控制、单次生成视频时长增加至10s!

快手视频生成大模型“可灵”&#xff08;Kling&#xff09;&#xff0c;作为全球首个真正用户可用的视频生成大模型&#xff0c;自面世以来&#xff0c;凭借其无与伦比的视频生成效果&#xff0c;在全球范围内赢得了用户的热烈追捧与高度评价。截至目前&#xff0c;申请体验其内…

修正版头像上传组件

修正版头像上传组件 文章说明核心源码展示运行效果展示源码下载 文章说明 在头像剪切上传一文中&#xff0c;我采用div做裁剪效果&#xff0c;感觉会有一些小问题&#xff0c;在昨天基于canvas绘制的功能中改进了一版&#xff0c;让代码变得更简洁&#xff0c;而且通用性相对高…

永恒之蓝:一场网络风暴的启示

引言 在网络安全的漫长历史中&#xff0c;“永恒之蓝”&#xff08;EternalBlue&#xff09;是一个不可忽视的里程碑事件。它不仅揭示了网络世界的脆弱性&#xff0c;还促使全球范围内对网络安全的重视达到了前所未有的高度。本文将深入探讨“永恒之蓝”漏洞的起源、影响及其对…

【WebGIS】从设计层面设计系统

本项目在通过现代信息技术手段&#xff0c;对古村古镇进行多方位、多角度的数字化记录、展示与传播&#xff0c;实现文化遗产的数字化保护、活化利用与共享。项目内容主要包括&#xff1a;1&#xff09;古村古镇数据库的建立&#xff1a;通过多种渠道收集古村古镇的各类信息&am…

期货量化交易客户端开源教学第八节——TCP通信服务类

private FReciveStr: AnsiString; {接收到的数据} IsConErr: Boolean; {网络连接是否失败} FSocket_LB: Integer; {TCP连接类别,0为交易,1为行情,2为查询} FRetryCount: Integer; {网络连接重试次数} FLoginErrEvent: TLoginErrEvent; {…

如何从 PDF 中删除背景

您是否曾经收到过充满分散注意力背景的扫描 PDF 文档&#xff1f;也许是带有繁忙水印的旧收据或背景光线不均匀的扫描文档。虽然这些背景可能看起来没什么大不了的&#xff0c;但它们会使您的工作空间变得混乱&#xff0c;并使您难以专注于重要信息。轻松删除这些不需要的元素并…

短视频SEO矩阵系统:源码开发与部署全攻略

在数字化时代&#xff0c;短视频已成为人们获取信息、娱乐休闲的重要方式。随着短视频平台的兴起&#xff0c;如何让自己的内容在众多视频中脱颖而出&#xff0c;成为每个创作者和内容运营者关注的焦点。本文将为您深入解析短视频SEO矩阵系统的源码开发与部署&#xff0c;助您在…

MT6825磁编码IC在智能双旋机器人中的应用

MT6825磁编码IC在智能双旋机器人中的应用&#xff0c;无疑为这一领域的创新和发展注入了新的活力。作为一款高性能的磁性位置传感器&#xff0c;MT6825以其独特的优势&#xff0c;在智能双旋机器人的运动控制、定位精度以及系统稳定性等方面发挥了关键作用。 www.abitions.com …

django ninja get not allowed 能用 put delete

遇到一个奇怪的问题&#xff0c;django-ninja 编写的 get post 方法不能使用 # 获取Material router.get(/material, responseList[MaterialSchemaOut]) paginate(MyPagination) def list_material(request, filters: Filters Query(...)):qs retrieve(request, Material, f…

Midjourney v6.5 可能会在“7月底”发布,并改进了真实感和皮肤纹理

Midjourney v6.5即将发布&#xff0c;这一更新将大幅提升图像的真实感和皮肤纹理&#xff0c;为用户带来更逼真的视觉体验。首席执行官David Holz在电话会议中宣布&#xff0c;新版本将提高图像清晰度&#xff0c;特别是在手部和皮肤细节上&#xff0c;同时改进Web应用程序和个…

ABAP调用BAPI时COMMIT WORK AND WAIT未按照预期同步提交问题分析

背景&#xff1a; 在做ABAP开发时&#xff0c;经常会有连续调用BAPI的需求&#xff0c;比如先创建销售订单&#xff0c;再依据销售订单创建交货单&#xff0c;再对交货单进行过账等类似的一连串调用&#xff0c;这种类似的场景往往需要前一步操作的数据完全写入数据库才能进行…

编译打包自己的云手机(redroid)镜像

前言 香橙派上跑云手机可以看之前的文章&#xff1a; 香橙派5plus上跑云手机方案一 redroid(带硬件加速)香橙派5plus上跑云手机方案二 waydroid 还有一个cuttlefish方案没说&#xff0c;后面再研究&#xff0c;cuttlefish的优势在于可以自定义内核且selinux是开启的&#xf…

vue3下载base64文件

如果后端明确告诉你返回的是base64&#xff0c;那请求头就不用带responseType: “blob”,和普通的接口一样发送就行 await materialsFile({ id: proxy.$route.query.id }).then((res) > {if (res) {// atob先解码base64数据const raw window.atob(res.data);// 获取解码后…

vscode 远程开发

目录 vscode 远程连接 选择 Python 环境 vscode 远程连接 按 CtrlShiftP 打开命令面板。输入并选择 Remote-SSH: Open SSH Configuration File...。选择 ~/.ssh/config 文件&#xff08;如果有多个选项&#xff09;。在打开的文件中添加或修改你的 SSH 配置。 这个可以右键…

Jupyter Notebook基础:用IPython实现动态编程

Jupyter Notebook基础&#xff1a;用IPython实现动态编程 1. 引言 Jupyter Notebook是一个基于Web的交互式计算环境&#xff0c;允许用户创建和共享包含实时代码、方程式、可视化和文本叙述的文档。它广泛应用于数据清洗与转换、数值模拟、统计建模、机器学习以及其他数据科学…

开放开源开先河(一)

2022年7月28日&#xff0c;以“软件定义世界 开源共筑未来”为主题的全球数字经济大会开放原子开源峰会在北京开幕&#xff0c;承办主峰会和为捐赠人进行授牌仪式的开放原子开源基金会再次进入公众视野。基金会秘书长孙文龙从汇聚全球产业链开源力量、核心链接能力、开发者分享…

Aop切面编程(2)--代理模式

1、代理模式的理解&#xff1a;不修改A对象的代码的基础上&#xff0c;对A代码块进行拓展。通过创建ProxyA代理对象&#xff0c;拓展A对象并调用A对象的核心功能&#xff1b; 即&#xff1a;不修改对象的源码基础上&#xff0c;创建代理对象&#xff0c;进行功能的附加和增强&…