R语言学习--Day01--数据清洗初了解andR的经典筛选语法

当我们在拿到一份数据时,是否遇到过想要分析数据却无从下手?通过编程语言去利用它时发现有很多报错不是来源于代码而是因为数据里有很多脏数据;在这个时候,如果你会用R语言来对数据进行清洗,这会让你的效率提升很多。

R语言的典型使用场景

统计分析
  • 执行假设检验(t检验、卡方检验)、回归分析、方差分析等

  • 优势:内置stats包提供100+统计函数,如lm(), aov()

数据可视化
  • 绘制统计图表(散点图、箱线图、热力图)

  • 优势:ggplot2语法比Python的matplotlib更直观

学术研究
  • 自动生成可重复报告(R Markdown)

  • 对比:Word+Excel手动操作效率低

数据清洗的必备知识

1、缺失值处理:很多时候出于不同的原因,像连接表格时有的列是连接前不具备的,亦或是数据在加载时发生错误,我们会在数据里发现很多NA值,当然这并不意味着它代表数据有问题,也有可能是数据本身的特点,NA代表了某种属性,此时我们既可以将其替换成0或1,也可以新建一列来标记这个缺失值

2、数据类型检查:在R语言中,我们会经常看到把时间数据转换为日期格式,或者把数据处理完后因子化的操作,这可以让我们得以在后续进行类似于统计数据分布,更好地观察到数据结构

3、管道化操作:在编写脚本的过程中,我们在编写某一个数据时会在中间穿插"%>%"的符号,代表后续操作在同一管道中进行,也就是可以在不干扰其他数据的情况下,对单独的数据进行操作,避免出现全局变量的影响

R语言的常见筛选语法

基础筛选
复制代码
# 按行筛选
df[df$age > 18, ]
subset(df, age > 18 & gender == "F")

# 按列筛选
df[, c("id", "name")]
dplyr包特有的语法
复制代码
library(dplyr)
df %>%
  filter(age %in% 20:30) %>%          # 年龄在20-30岁
  select(starts_with("test")) %>%     # 选择以test开头的列
  arrange(desc(score)) %>%           # 按分数降序
  distinct(id, .keep_all = TRUE)     # 去重保留第一条
条件替换
复制代码
df %>%
  mutate(grade = case_when(
    score >= 90 ~ "A",
    score >= 60 ~ "B",
    TRUE ~ "C"  # 默认值
  ))
处理缺失值
复制代码
na.omit(df)                          # 删除含NA的行
df[complete.cases(df), ]             # 等价写法
df %>% drop_na(score)                # 删除score列NA的行na.omit(df)                          # 删除含NA的行
df[complete.cases(df), ]             # 等价写法
df %>% drop_na(score)                # 删除score列NA的行
特殊筛选
复制代码
diag.raw[grep(急性心衰|(衰竭),]$ahf <- 1 #通过筛选正则化的模糊关键词,直接创建新列并赋予值
相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛6 天前
计算机系统概论——校验码
学习
babe小鑫6 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms6 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下6 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。6 天前
2026.2.25监控学习
学习
im_AMBER6 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J6 天前
从“Hello World“ 开始 C++
c语言·c++·学习