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

R for Data Science(3)

  • R for Data Science
  • 以下是关于网页内容的详细笔记:

1. 章节概览

  • 章节主题:数据转换(Data Transformation)
  • 核心内容:介绍如何使用 R 中的 dplyr 包进行数据转换,包括对数据框的行、列和组的操作,以及管道操作符的使用。

2. 数据转换基础

  • dplyr 包:是 tidyverse 的核心成员之一,提供了用于数据转换的工具。
  • nycflights13 数据集:包含 2013 年从纽约市出发的所有航班信息,用于示例分析。
  • Tibble:一种特殊的数据框,专为大型数据集设计,仅显示部分行和列。

3. 行操作

3.1 filter() 函数

  • 功能:根据条件筛选行。
  • 示例
    • 筛选起飞时间晚点超过 120 分钟的航班:
      flights |>filter(dep_delay > 120)
      
    • 筛选特定月份或日期的航班:
      flights |>filter(month == 1 & day == 1)
      
  • 常见错误:使用 = 而不是 ==,或者错误地使用逻辑运算符。

3.2 arrange() 函数

  • 功能:根据列的值对行进行排序。
  • 示例
    • 按起飞时间排序:
      flights |>arrange(year, month, day, dep_time)
      
    • 按延迟时间降序排序:
      flights |>arrange(desc(dep_delay))
      

3.3 distinct() 函数

  • 功能:查找唯一行或唯一组合。
  • 示例
    • 删除重复行:
      flights |>distinct()
      
    • 查找唯一的出发地和目的地组合:
      flights |>distinct(origin, dest)
      

4. 列操作

4.1 mutate() 函数

  • 功能:创建新列或修改现有列。
  • 示例
    • 计算延迟时间的增益和飞行速度:
      flights |>mutate(gain = dep_delay - arr_delay,speed = distance / air_time * 60)
      

4.2 select() 函数

  • 功能:选择特定的列。
  • 示例
    • 选择特定列:
      flights |>select(year, month, day)
      
    • 使用范围选择:
      flights |>select(year:day)
      

4.3 rename() 函数

  • 功能:重命名列。
  • 示例
    • 重命名列:
      flights |>rename(tail_num = tailnum)
      

4.4 relocate() 函数

  • 功能:重新排列列的顺序。
  • 示例
    • 将列移动到前面:
      flights |>relocate(time_hour, air_time)
      

5. 组操作

5.1 group_by() 函数

  • 功能:按一个或多个变量分组。
  • 示例
    • 按月份分组:
      flights |>group_by(month)
      

5.2 summarize() 函数

  • 功能:对分组数据进行汇总。
  • 示例
    • 计算每个月的平均延迟时间:
      flights |>group_by(month) |>summarize(avg_delay = mean(dep_delay, na.rm = TRUE))
      

5.3 slice_*() 函数

  • 功能:提取每个组中的特定行。
  • 示例
    • 提取每个目的地延迟时间最长的航班:
      flights |>group_by(dest) |>slice_max(arr_delay, n = 1)
      

6. 管道操作符

  • 功能:将多个操作组合在一起,使代码更简洁。
  • 示例
    • 使用管道找到最快的航班:
      flights |>filter(dest == "IAH") |>mutate(speed = distance / air_time * 60) |>select(year:day, dep_time, carrier, flight, speed) |>arrange(desc(speed))
      

7. 案例研究

  • 内容:使用棒球数据集(Lahman 包)分析击球手的表现。
  • 示例
    • 计算击球手的击球平均数和击球次数:
      batters <- Lahman::Batting |>group_by(playerID) |>summarize(performance = sum(H, na.rm = TRUE) / sum(AB, na.rm = TRUE),n = sum(AB, na.rm = TRUE))
      

8. 总结

  • 重点:介绍了 dplyr 包中用于操作数据框的工具,包括行操作、列操作和组操作。
  • 下一步:深入学习特定类型数据的转换方法(如数字、字符串、日期等)。

相关文章:

  • windows环境下c语言链接sql数据库
  • Spring 框架线程安全的五大保障策略解析
  • 山东大学计算机图形学期末复习11——CG13上
  • NAT(网络地址转换)逻辑图解+实验详解
  • symfonos: 2靶场
  • C++(21):fstream的读取和写入
  • StarRocks Community Monthly Newsletter (Apr)
  • 系统性能不达标,如何提升用户体验?
  • 嵌入式学习的第二十二天-数据结构-栈+队列
  • NC016NC017美光固态芯片NC101NC102
  • LLMs:《POE报告:2025年春季人工智能模型使用趋势》解读
  • 服务器防文件上传手写waf
  • 【每日一题丨2025年5.12~5.18】排序相关题
  • LeeCode 101.对称二叉树
  • 互联网大厂Java面试场景:从缓存到容器化的技术问答
  • H2数据库源码学习+debug, 数据库 sql、数据库引擎、数据库存储从此不再神秘
  • 代码随想录算法训练营第六十六天| 图论11—卡码网97. 小明逛公园,127. 骑士的攻击
  • OpenAI推出Codex — ChatGPT内置的软件工程Agents
  • (三)MMA(KeyCloak身份服务器/OutBox Pattern)
  • Git基础原理和使用
  • 中国旅游日|上天当个“显眼包”!体验低空经济的“飞”凡魅力
  • 人民日报和音:相信中国就是相信明天
  • 经济日报:人工智能开启太空经济新格局
  • 新任重庆市垫江县委副书记刘振已任县政府党组书记
  • 80后女博士黄双燕拟提名为内蒙古盟市政府(行署)副职人选
  • 王东杰评《国家与学术》︱不“国”不“故”的“国学”