R4DS项目中的数据转换技术详解

R4DS项目中的数据转换技术详解

r4ds R for data science: a book r4ds 项目地址: https://gitcode.com/gh_mirrors/r4/r4ds

数据转换概述

在数据分析工作中,原始数据往往不会以最理想的形态呈现。数据转换是数据分析流程中不可或缺的一环,它使我们能够将原始数据塑造成更适合分析的形式。本文将基于R4DS项目中的数据处理理念,深入讲解如何使用dplyr包进行高效的数据转换操作。

准备工作

在开始数据转换之前,我们需要加载必要的R包和数据集:

library(nycflights13)
library(tidyverse)

这里我们使用nycflights13包中的flights数据集,它包含了2013年从纽约市出发的所有航班信息,共计336,776条记录。通过glimpse()函数可以快速查看数据结构和类型:

glimpse(flights)

行操作技术

数据筛选:filter()

filter()函数用于基于条件筛选行数据。它接受一个数据框和一系列逻辑条件,返回满足所有条件的行。

# 找出延误超过2小时起飞的航班
flights |> 
  filter(dep_delay > 120)

# 找出1月1日起飞的航班
flights |> 
  filter(month == 1 & day == 1)

# 使用%in%简化多条件筛选
flights |> 
  filter(month %in% c(1, 2))

常见错误包括:

  • 使用=代替==进行相等比较
  • 错误地编写"或"条件表达式

数据排序:arrange()

arrange()函数按指定列的值对行进行排序:

# 按起飞时间排序
flights |> 
  arrange(year, month, day, dep_time)

# 按延误时间降序排列
flights |> 
  arrange(desc(dep_delay))

去重处理:distinct()

distinct()用于查找数据中的唯一行:

# 查找唯一的出发地-目的地组合
flights |> 
  distinct(origin, dest)

# 保留其他列信息
flights |> 
  distinct(origin, dest, .keep_all = TRUE)

列操作技术

创建新列:mutate()

mutate()用于基于现有列创建新列:

flights |> 
  mutate(
    gain = dep_delay - arr_delay,
    speed = distance / air_time * 60,
    .before = 1  # 将新列放在最前面
  )

通过.keep参数可以控制保留哪些列:

  • "used":只保留参与计算或新创建的列
  • "unused":保留未使用的列
  • "all":保留所有列(默认)

列选择:select()

select()用于选择特定的列:

# 按名称选择列
flights |> 
  select(year, month, day)

# 选择列范围
flights |> 
  select(year:day)

# 使用辅助函数选择
flights |> 
  select(starts_with("arr"), ends_with("time"))

# 选择时重命名列
flights |> 
  select(tail_num = tailnum)

列重命名:rename()

rename()可以在保留所有列的同时重命名特定列:

flights |> 
  rename(tail_num = tailnum)

列位置调整:relocate()

relocate()用于调整列的位置:

# 将time_hour和air_time移到前面
flights |> 
  relocate(time_hour, air_time)

# 将year到dep_time移到time_hour后面
flights |> 
  relocate(year:dep_time, .after = time_hour)

最佳实践建议

  1. 管道操作符(|>)可以显著提高代码可读性,建议合理使用
  2. 为重要的中间结果创建有意义的变量名
  3. 组合多个简单操作比编写复杂表达式更易于维护
  4. 注意数据类型对操作的影响
  5. 定期检查操作结果是否符合预期

通过掌握这些数据转换技术,您将能够高效地准备数据,为后续的分析和可视化打下坚实基础。记住,数据转换通常占数据分析工作的80%时间,投资于学习这些技能将获得长期回报。

r4ds R for data science: a book r4ds 项目地址: https://gitcode.com/gh_mirrors/r4/r4ds

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈革牧Perry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值