从零开始学习R语言

发布于:2024-10-09 ⋅ 阅读:(7) ⋅ 点赞:(0)

目录

引言

环境搭建

安装R

安装RStudio

RStudio界面简介

基础语法

注释

数据类型与数据结构

原子向量

数据结构

基本运算符

算术运算符

比较运算符

逻辑运算符

常用函数

数据操作

数据导入

读取CSV文件

读取Excel文件

连接数据库

数据清洗

处理缺失值

数据类型转换

数据变换

安装并加载dplyr

常用函数

数据可视化

基础绘图

绘制散点图

绘制直方图

高级绘图:ggplot2

安装并加载ggplot2

基本用法

常用图形

自定义图形

统计分析

描述性统计

常用指标

计算众数的示例

推断性统计

t检验

卡方检验

方差分析(ANOVA)

回归分析

简单线性回归

多元线性回归

回归模型诊断

实践项目

案例一:数据探索性分析(EDA)

案例二:建立回归模型预测房价

扩展内容

创建Shiny应用

安装并加载Shiny

简单的Shiny应用示例

运行应用

使用R Markdown生成报告

安装并加载rmarkdown

创建R Markdown文件

编写内容

绘图


引言

R语言是一种用于统计分析、数据挖掘和数据可视化的开源编程语言和软件环境。自1993年由Ross Ihaka和Robert Gentleman开发以来,R语言凭借其强大的统计计算能力和丰富的可视化功能,已成为数据科学家和统计学家不可或缺的工具。

学习目标:

  • 理解R语言的基本语法和数据结构
  • 掌握数据导入、清洗和变换的方法
  • 能够使用R进行数据可视化和统计分析
  • 熟悉常用的R扩展包,提高数据处理效率
  • 通过实践项目巩固所学知识

环境搭建

安装R

R语言支持多种操作系统,包括Windows、macOS和Linux。

各操作系统安装步骤:

  • Windows:

    1. 访问R的CRAN镜像站点下载最新的Windows安装包。
    2. 运行安装程序,按照提示完成安装。
  • macOS:

    1. 访问CRAN的macOS页面下载适合您系统的安装包。
    2. 双击安装包,按照指引完成安装。
  • Linux:

    • 使用包管理器安装,如Ubuntu下执行:

      sudo apt-get update sudo apt-get install r-base

安装RStudio

RStudio是一款强大的R语言集成开发环境,提供了友好的用户界面和丰富的功能。

安装步骤:

  1. 访问RStudio官网下载适合您操作系统的安装包。
  2. 运行安装程序,按照提示完成安装。

RStudio界面简介

RStudio主要由以下几个区域组成:

  • 脚本编辑器:编写和编辑R脚本。
  • 控制台:直接输入R命令并立即执行。
  • 环境/历史:查看当前工作空间中的变量和命令历史。
  • 文件/图形/包/帮助:管理文件、查看绘图结果、安装和加载包、查看帮助文档。

基础语法

注释

  • 单行注释:以#开头。

    # 这是一个单行注释

数据类型与数据结构

原子向量

R中的基本数据类型都是向量,分为以下几种:

数据类型 描述 示例
数值型 实数,例如整数和小数 x <- 42
整数型 整数,加后缀L表示 y <- 42L
字符型 文本字符串 name <- "Alice"
逻辑型 布尔值,TRUEFALSE flag <- TRUE
复数型 复数 z <- 1+2i
数据结构
数据结构 描述 示例
向量 同一类型的元素集合 v <- c(1, 2, 3)
因子 分类数据,存储为整数并有标签 f <- factor(c("男", "女", "男"))
列表 可包含不同类型元素的集合 lst <- list(name="Alice", age=25)
矩阵 二维的同类型元素集合 m <- matrix(1:6, nrow=2, ncol=3)
数据框 表格形式的数据集 df <- data.frame(id=1:3, score=c(85,90,95))
数组 多维的同类型元素集合 arr <- array(1:8, dim=c(2,2,2))

基本运算符

算术运算符
运算符 描述 示例
+ 加法 2 + 3
- 减法 5 - 2
* 乘法 2 * 3
/ 除法 6 / 2
^ 2 ^ 3
%% 取模 5 %% 2(结果为1)
%/% 整除 5 %/% 2(结果为2)
比较运算符
运算符 描述 示例
== 等于 x == y
!= 不等于 x != y
> 大于 x > y
< 小于 x < y
>= 大于等于 x >= y
<= 小于等于 x <= y
逻辑运算符
运算符 描述 示例
& 元素级与 x & y
` ` 元素级或
! !x
&& 短路与 x && y(仅检查第一个元素)
` `

常用函数

  • 赋值<-=

     
    x <- 10
    y = 20
    

  • 查看对象类型class()

     
    class(x)  # 输出 "numeric"
    

  • 求长度length()

     
    length(c(1, 2, 3))  # 输出 3
    

  • 删除对象rm()

     
    rm(x)  # 删除变量x
    

数据操作

数据导入

读取CSV文件
data <- read.csv("data.csv", header=TRUE, sep=",")
读取Excel文件

需要先安装并加载readxl包:


install.packages("readxl")
library(readxl)
data <- read_excel("data.xlsx", sheet=1)

连接数据库

以连接MySQL为例:


install.packages("RMySQL")
library(RMySQL)
conn <- dbConnect(MySQL(), dbname="dbname", host="host", user="user", password="password")
data <- dbGetQuery(conn, "SELECT * FROM tablename")

数据清洗

处理缺失值
  • 检查缺失值is.na()

    sum(is.na(data))  # 统计缺失值数量
    
  • 删除缺失值na.omit()

    data_clean <- na.omit(data)
    
  • 填充缺失值

    data[is.na(data)] <- 0  # 将缺失值替换为0
    
数据类型转换
  • 转换为因子

    data$gender <- as.factor(data$gender)
    
  • 转换为数值型

    data$age <- as.numeric(data$age)
    

数据变换

使用dplyr包对数据进行操作。

安装并加载dplyr
install.packages("dplyr")
library(dplyr)
常用函数
函数 描述 示例
filter() 筛选行 filter(data, age > 30)
select() 选择列 select(data, name, age)
arrange() 排序 arrange(data, desc(age))
mutate() 添加新列 mutate(data, age_group = ifelse(age > 30, "老年", "青年"))
summarise() 汇总 summarise(data, avg_age = mean(age))
group_by() 分组 data %>% group_by(gender) %>% summarise(count = n())

数据可视化

基础绘图

使用R的基础绘图系统进行简单的绘图。

绘制散点图
plot(data$x, data$y, main="散点图", xlab="X轴", ylab="Y轴", col="blue")
绘制直方图
hist(data$age, breaks=10, main="年龄分布直方图", xlab="年龄", col="green")

高级绘图:ggplot2

ggplot2是R中最流行的绘图包,基于语法层次的绘图理念。

安装并加载ggplot2
install.packages("ggplot2")
library(ggplot2)
基本用法
ggplot(data, aes(x=age, y=income)) + geom_point()
常用图形
图形类型 函数 示例
柱状图 geom_bar() ggplot(data, aes(x=gender)) + geom_bar()
折线图 geom_line() ggplot(data, aes(x=year, y=sales)) + geom_line()
箱线图 geom_boxplot() ggplot(data, aes(x=group, y=value)) + geom_boxplot()
密度图 geom_density() ggplot(data, aes(x=variable)) + geom_density()
自定义图形
  • 添加标题和标签

    ggplot(data, aes(x=age, y=income)) +
      geom_point() +
      ggtitle("年龄与收入关系图") +
      xlab("年龄") +
      ylab("收入")
    
  • 调整主题

    ggplot(data, aes(x=age, y=income)) +
      geom_point() +
      theme_minimal()
    

统计分析

描述性统计

常用指标
指标 函数 示例
均值 mean() mean(data$age)
中位数 median() median(data$income)
众数 自定义函数 见下方示例
方差 var() var(data$age)
标准差 sd() sd(data$income)
四分位数 quantile() quantile(data$age)
计算众数的示例
get_mode <- function(v) {
  uniqv <- unique(v)
  uniqv[which.max(tabulate(match(v, uniqv)))]
}
mode_age <- get_mode(data$age)

推断性统计

t检验

用于比较两个样本均值是否有显著差异。

t.test(data$score ~ data$group)
卡方检验

用于检验分类变量之间的独立性。

chisq.test(table(data$gender, data$purchase))
方差分析(ANOVA)

用于比较多个组的均值差异。

anova_result <- aov(score ~ group, data=data)
summary(anova_result)

回归分析

简单线性回归
model <- lm(income ~ age, data=data)
summary(model)
多元线性回归
model <- lm(income ~ age + education + experience, data=data)
summary(model)
回归模型诊断
plot(model)

实践项目

案例一:数据探索性分析(EDA)

目标:

  • mtcars数据集进行探索性分析
  • 了解不同变量之间的关系
  • 可视化数据特征

步骤:

  1. 加载数据集

    data <- mtcars
    
  2. 查看数据结构

    str(data)
    summary(data)
    
  3. 计算描述性统计量

    mean_mpg <- mean(data$mpg)
    median_mpg <- median(data$mpg)
    sd_mpg <- sd(data$mpg)
    
  4. 绘制相关矩阵图

    pairs(data)
    
  5. 使用ggplot2绘制散点图

    ggplot(data, aes(x=wt, y=mpg)) +
      geom_point() +
      geom_smooth(method="lm") +
      ggtitle("汽车重量与油耗关系图") +
      xlab("重量") +
      ylab("每加仑英里数")
    

案例二:建立回归模型预测房价

数据集:

使用波士顿房价数据集(Boston),需要先安装并加载MASS包。

步骤:

  1. 加载数据集

    library(MASS)
    data <- Boston
    
    
  2. 查看数据结构

    str(data)
    summary(data)
    
    
  3. 分割训练集和测试集

    set.seed(123)
    index <- sample(1:nrow(data), 0.7 * nrow(data))
    train <- data[index, ]
    test <- data[-index, ]
    
    
  4. 建立线性回归模型

    model <- lm(medv ~ ., data=train)
    summary(model)
    
    
  5. 模型评估

    predictions <- predict(model, newdata=test)
    actuals <- test$medv
    mse <- mean((predictions - actuals)^2)
    print(paste("均方误差(MSE):", round(mse, 2)))

  6. 可视化结果

    plot(actuals, predictions,
         main="实际值 vs 预测值",
         xlab="实际房价",
         ylab="预测房价",
         pch=16, col="blue")
    abline(0, 1, col="red", lwd=2)
    

扩展内容

创建Shiny应用

Shiny是R中的一个包,用于构建交互式Web应用。

安装并加载Shiny
install.packages("shiny")
library(shiny)
简单的Shiny应用示例
# 保存为app.R
library(shiny)

ui <- fluidPage(
  titlePanel("Hello Shiny!"),
  sidebarLayout(
    sidebarPanel(
      sliderInput("bins",
                  "选择柱状图的分箱数:",
                  min = 1,
                  max = 50,
                  value = 30)
    ),
    mainPanel(
      plotOutput("distPlot")
    )
  )
)

server <- function(input, output) {
  output$distPlot <- renderPlot({
    x <- faithful$eruptions
    bins <- seq(min(x), max(x), length.out = input$bins + 1)

    hist(x, breaks = bins, col = "darkgray", border = "white",
         xlab = "喷发持续时间(分钟)",
         main = "老忠实泉喷发持续时间直方图")
  })
}

shinyApp(ui = ui, server = server)
运行应用
runApp("app.R")

使用R Markdown生成报告

R Markdown是一种基于Markdown的文档格式,支持嵌入R代码,自动生成报告。

安装并加载rmarkdown
install.packages("rmarkdown")
library(rmarkdown)
创建R Markdown文件

在RStudio中,选择File -> New File -> R Markdown,按照提示创建。

编写内容
---
title: "数据分析报告"
author: "Your Name"
date: "`r Sys.Date()`"
output: html_document
---

# 简介

这是一个使用R Markdown生成的报告示例。

# 数据加载

```{r}
data <- mtcars
summary(data)

绘图

library(ggplot2)
ggplot(data, aes(x=wt, y=mpg)) + geom_point()