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

`tidyverse` 中涉及的函数及其用法

1. filter():根据条件筛选行

filter() 函数用于根据逻辑条件保留数据框中的行。

  • 基本语法
    filter(.data, condition)
    
    • .data:要筛选的数据框。
    • condition:逻辑条件,可以是逻辑运算符(如 ><== 等)组合。
  • 示例
    # 筛选起飞延误超过120分钟的航班
    flights %>%filter(dep_delay > 120)
    # 筛选1月1日的航班
    flights %>%filter(month == 1 & day == 1)
    # 筛选1月或2月的航班
    flights %>%filter(month %in% c(1, 2))
    

2. select():选择列

select() 函数用于按名称、范围或条件选择数据框中的列。

  • 基本语法
    select(.data, ...)
    
    • .data:要选择列的数据框。
    • ...:要选择的列名,可以使用列名、范围(如 year:day)或条件(如 !year:day)。
  • 示例
    # 选择指定列
    flights %>%select(year, month, day)
    # 选择范围内的列
    flights %>%select(year:day)
    # 排除指定列
    flights %>%select(!year:day)
    # 选择特定类型的列
    flights %>%select(where(is.character))
    

3. mutate():添加新列

mutate() 函数用于基于现有列创建新列,支持数学计算。

  • 基本语法
    mutate(.data, name = value, ...)
    
    • .data:要处理的数据框。
    • name = value:新列的名称和值,值可以是基于现有列的计算表达式。
  • 示例
    # 计算延误时间差和飞行速度
    flights %>%mutate(gain = dep_delay - arr_delay, speed = distance / air_time * 60)
    # 控制新列位置
    flights %>%mutate(speed = distance / air_time * 60, .before = 1)
    

4. arrange():根据列值排序行

arrange() 函数用于按一个或多个列的值对数据框进行排序。

  • 基本语法
    arrange(.data, ...)
    
    • .data:要排序的数据框。
    • ...:要排序的列名,可以使用 desc() 函数进行降序排序。
  • 示例
    # 按年、月、日、出发时间排序
    flights %>%arrange(year, month, day, dep_time)
    # 按延误时间降序排序
    flights %>%arrange(desc(dep_delay))
    

5. distinct():查找唯一行

distinct() 函数用于去除重复行,可指定列名以查找特定列的唯一组合。

  • 基本语法
    distinct(.data, ..., .keep_all = FALSE)
    
    • .data:要处理的数据框。
    • ...:要查找唯一组合的列名。
    • .keep_all:是否保留其他列,默认为 FALSE
  • 示例
    # 查找所有唯一的起点和终点组合
    flights %>%distinct(origin, dest)
    # 保留其他列时查找唯一组合
    flights %>%distinct(origin, dest, .keep_all = TRUE)
    

6. rename():重命名列

rename() 函数用于保留所有列,仅重命名指定列。

  • 基本语法
    rename(.data, new_name = old_name, ...)
    
    • .data:要处理的数据框。
    • new_name = old_name:新列名和旧列名的对应关系。
  • 示例
    flights %>%rename(tail_num = tailnum)
    

7. relocate():移动列

relocate() 函数用于移动列的位置。

  • 基本语法
    relocate(.data, ..., .before = NULL, .after = NULL)
    
    • .data:要处理的数据框。
    • ...:要移动的列名。
    • .before.after:指定移动到的位置。
  • 示例
    # 将列移到前面
    flights %>%relocate(time_hour, air_time)
    # 将列移到指定位置
    flights %>%relocate(year:dep_time, .after = time_hour)
    

8. group_by():分组

group_by() 函数用于按一个或多个变量将数据集划分为组。

  • 基本语法
    group_by(.data, ...)
    
    • .data:要分组的数据框。
    • ...:分组变量的列名。
  • 示例
    flights %>%group_by(month)
    flights %>%group_by(year, month, day)
    

9. summarize():汇总

summarize() 函数用于对分组数据进行汇总计算。

  • 基本语法
    summarize(.data, name = function(...), ...)
    
    • .data:要汇总的数据框。
    • name = function(...):汇总计算的名称和函数。
  • 示例
    # 计算每月的平均延误时间
    flights %>%group_by(month) %>%summarize(avg_delay = mean(dep_delay, na.rm = TRUE))
    # 计算每组的行数
    flights %>%group_by(month) %>%summarize(n = n())
    

10. slice_*() 函数:提取特定行

slice_*() 函数用于从每个组中提取特定行。

  • 基本语法
    slice_max(.data, order_by, n = 1, ...)
    slice_min(.data, order_by, n = 1, ...)
    
    • .data:要处理的数据框。
    • order_by:排序的列名。
    • n:提取的行数。
  • 示例
    # 提取每个目的地最晚到达的航班
    flights %>%group_by(dest) %>%slice_max(arr_delay, n = 1)
    

这些函数是 tidyversedplyr 包的核心工具,可以帮助你高效地进行数据转换和操作。

http://www.xdnf.cn/news/1156879.html

相关文章:

  • 【RAG Agent】Deep Searcher实现逻辑解析
  • 【JS逆向基础】数据库之redis
  • 第一章: 初识 Redis:背后的特性和典型应用场景
  • 什么是 ELK/Grafana
  • 使用pytorch创建模型时,nn.BatchNorm1d(128)的作用是什么?
  • Muduo库中单例模式详解
  • Mysql(事务)
  • 小型支付项目3-5:检测未接收到或未正确处理的支付回调通知
  • UE5多人MOBA+GAS 番外篇:移植Lyra的伤害特效(没用GameplayCue,因为我失败了┭┮﹏┭┮)
  • 音视频学习(四十一):H264帧内压缩技术
  • 【Vue进阶学习笔记】Vue 路由入门指南
  • 单线程 Reactor 模式
  • 动静态库的制作和原理
  • 【unitrix】 6.10 类型转换(from.rs)
  • [BUG]关于UE5.6编译时出现“Microsoft.MakeFile.Targets(44,5): Error MSB3073”问题的解决
  • 【软件测试】从软件测试到Bug评审:生命周期与管理技巧
  • VUE2 学习笔记2 数据绑定、数据代理、MVVM
  • 【数据结构】第一讲 —— 概论
  • 基于Arduino的智能寻迹小车设计
  • 剑指offer——链表:旋转数组的最小数字
  • 【OD机试】池化资源共享
  • 「Java案例」利用方法求反素数
  • Ubuntu挂载和取消挂载
  • LP-MSPM0G3507学习--07定时器之二定时节拍
  • ZYNQ平台深度剖析:EMMC/FLASH/SD卡性能测试与创新实践
  • 从磁记录到数据中心:磁盘原理与服务器架构的完整技术链路
  • 两个数据表的故事:第 1 部分
  • Spring之事务使用指南
  • Java行为型模式---解释器模式
  • Openlayers 面试题及答案180道(121-140)