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

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), ]

数据框的筛选

# 条件筛选
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)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2024黑马AI+若依框架项目开发 个人心得、踩坑和bug记录 全网最快最全 基础功能认识篇
  • Redis的热key解决
  • Windows上LabVIEW编译生成可执行程序
  • 并发编程-07之CountDownLatch
  • 【简历】兰州某大学一本硕士:面试通过率基本是为0
  • 深圳晶彩智能JC3636W518C开箱实现电脑副屏功能
  • 7/13 - 7/15
  • 零基础自学爬虫技术该从哪里开始入手?
  • 使用Elasticsearch Python SDK 查询Easysearch
  • 惊呆了!小白也能上手,Python打造微信自动小秘书(Python如何自动化控制微信:聊天,图片,文件等操作)
  • Flink Window 窗口【更新中】
  • cleanshot Mac 上的截图工具
  • Linux——删除账号,账户切换,控制用户对系统命令的使用权限,配置/etc/sudoers文件方式
  • 1.29、基于浅层神经网络的数据拟合(matlab)
  • Mysql表的三范式、事务和查询
  • hexo+github搭建个人博客
  • CentOS7简单部署NFS
  • exif信息对照
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Java 最常见的 200+ 面试题:面试必备
  • laravel5.5 视图共享数据
  • React-Native - 收藏集 - 掘金
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 你真的知道 == 和 equals 的区别吗?
  • 用jquery写贪吃蛇
  • 原生js练习题---第五课
  • 字符串匹配基础上
  • Python 之网络式编程
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • #if和#ifdef区别
  • (2022 CVPR) Unbiased Teacher v2
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转) Android中ViewStub组件使用
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .“空心村”成因分析及解决对策122344
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET 8.0 发布到 IIS
  • .NET CLR基本术语
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net 反编译_.net反编译的相关问题
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET多线程执行函数
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • @Slf4j idea标红Cannot resolve symbol ‘log‘
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [ACP云计算]易混淆知识点(考题总结)
  • [AIGC] CompletableFuture的重要方法有哪些?
  • [CR]厚云填补_多云条件下土地覆盖分割的多模态多任务学习
  • [FreeRTOS 基础知识] 保存现场与恢复现场