R语言入门:数据分析基础 – wiki大全

Here’s the article:


R语言入门:数据分析基础

R语言作为一种强大的统计编程语言和数据分析环境,在数据科学领域占据着举足轻重的地位。它拥有丰富的数据处理、统计建模和图形可视化功能,深受统计学家、数据科学家和研究人员的喜爱。本文旨在为R语言初学者提供一份详尽的入门指南,重点介绍数据分析的基础知识。

1. 为什么选择R语言进行数据分析?

  • 开源免费:R是开源软件,任何人都可以免费使用、修改和分发。
  • 强大的统计功能:R内置了大量统计分析函数,涵盖了从描述性统计到复杂的机器学习算法。
  • 卓越的数据可视化:R拥有世界一流的图形生成能力,特别是ggplot2包,可以创建高质量、定制化的统计图形。
  • 丰富的社区支持和扩展包:R社区非常活跃,拥有超过19000个CRAN(Comprehensive R Archive Network)包,几乎可以满足任何数据分析需求。
  • 跨平台:R可以在Windows、macOS和Linux等操作系统上运行。

2. R语言的安装与环境配置

要开始使用R,你需要安装R本身以及一个集成开发环境(IDE)。

  1. 安装R

    • 访问R官方网站
    • 根据你的操作系统选择相应的下载链接(例如,Windows、macOS)。
    • 按照安装向导的指示完成安装。
  2. 安装RStudio Desktop (推荐IDE)

    • RStudio是使用R最流行、最友好的IDE。它提供了代码编辑器、控制台、环境查看器、文件浏览器、绘图窗口等一系列强大功能。
    • 访问RStudio官方网站
    • 下载免费的RStudio Desktop版本。
    • 按照安装向导的指示完成安装。

安装完成后,打开RStudio。你会看到一个通常分为四个窗格的界面:
* 左上:源代码编辑器(Script Editor)
* 左下:控制台(Console),可以直接输入和执行R命令
* 右上:环境(Environment)和历史(History),显示当前工作空间中的对象和命令历史
* 右下:文件(Files)、绘图(Plots)、包(Packages)、帮助(Help)和查看器(Viewer)

3. R语言基础语法与操作

R语言的语法相对直观,以下是一些基本概念:

3.1 注释

使用#符号进行单行注释。R会忽略#之后的所有内容。

“`R

这是一个注释

x <- 10 # 也可以在代码后面添加注释
“`

3.2 赋值

在R中,最常用的赋值操作符是<-,也可以使用=

R
my_variable <- 5
another_variable = "Hello, R!"

3.3 基本数据类型

R有几种基本数据类型:
* 数值型 (numeric):整数和浮点数。
R
x <- 10
y <- 3.14

* 整型 (integer):通过在数字后加L明确指定。
R
z <- 5L

* 字符型 (character):文本,用单引号或双引号括起来。
R
name <- "Alice"
greeting <- 'Hello'

* 逻辑型 (logical)TRUEFALSE(可简写为TF)。
R
is_true <- TRUE
is_false <- F

* 复数型 (complex)
R
cplx <- 1 + 2i

3.4 常用算术和逻辑运算符

  • 算术运算符+ (加), - (减), * (乘), / (除), ^ (幂), %% (取模), %/% (整除)
  • 逻辑运算符< (小于), > (大于), <= (小于等于), >= (大于等于), == (等于), != (不等于), & (逻辑与), | (逻辑或), ! (逻辑非)

“`R
a <- 10
b <- 3
print(a + b) # 13
print(a / b) # 3.333333

x <- TRUE
y <- FALSE
print(x & y) # FALSE
“`

4. R语言核心数据结构

R有五种主要的数据结构,理解它们对于高效数据分析至关重要:

4.1 向量 (Vector)

向量是R中最基本的数据结构,存储相同类型的数据。使用c()函数创建。

“`R

数值向量

numbers <- c(1, 5, 8, 10)

字符向量

fruits <- c(“apple”, “banana”, “cherry”)

逻辑向量

flags <- c(TRUE, FALSE, TRUE)

访问向量元素

print(numbers[1]) # 第一个元素 (R索引从1开始)
print(fruits[c(1, 3)]) # 第一个和第三个元素
“`
注意:如果向量中包含不同类型的数据,R会尝试将所有元素强制转换为最通用类型(例如,数值和字符混合时会全部变为字符型)。

4.2 矩阵 (Matrix)

矩阵是二维的,存储相同类型的数据,具有行和列。使用matrix()函数创建。

“`R

创建一个3行2列的矩阵,按列填充

mat <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, ncol = 2, byrow = FALSE)
print(mat)

[,1] [,2]

[1,] 1 4

[2,] 2 5

[3,] 3 6

访问矩阵元素

print(mat[2, 1]) # 第二行第一列的元素
print(mat[1, ]) # 第一行所有元素
print(mat[, 2]) # 第二列所有元素
“`

4.3 数组 (Array)

数组是N维的,存储相同类型的数据。可以看作是矩阵的推广。使用array()函数创建。

“`R

创建一个2x3x2的三维数组

arr <- array(1:12, dim = c(2, 3, 2))
print(arr)
“`

4.4 数据框 (Data Frame)

数据框是R中最重要的数据结构,用于存储表格数据。它像电子表格一样,每列可以是不同类型的数据(但同一列的数据类型必须相同)。每行代表一个观察值,每列代表一个变量。使用data.frame()函数创建。

“`R

创建一个数据框

df <- data.frame(
Name = c(“Alice”, “Bob”, “Charlie”),
Age = c(25, 30, 22),
IsStudent = c(TRUE, FALSE, TRUE)
)
print(df)

Name Age IsStudent

1 Alice 25 TRUE

2 Bob 30 FALSE

3 Charlie 22 TRUE

访问数据框元素

print(df$Name) # 访问’Name’列
print(df[, “Age”]) # 另一种访问’Age’列的方式
print(df[1, ]) # 访问第一行
print(df[2, “Age”]) # 访问第二行’Age’列的元素
“`

4.5 列表 (List)

列表是R中最灵活的数据结构,可以存储不同类型的任意R对象(包括其他列表)。使用list()函数创建。

“`R

创建一个列表

my_list <- list(
name = “John”,
age = 30,
scores = c(95, 88, 92),
is_active = TRUE,
address = list(street = “Main St”, city = “Anytown”) # 列表中可以包含其他列表
)
print(my_list)

访问列表元素

print(my_list$name) # 通过名称访问
print(my_list[[2]]) # 通过索引访问 (返回实际对象)
print(my_list[“scores”]) # 通过名称访问 (返回单元素列表)
“`

5. 数据导入与导出

真实世界的数据通常存储在外部文件中,R提供了多种函数来处理它们。

5.1 导入数据

  • CSV文件read.csv()
    R
    # 假设有一个名为 "data.csv" 的CSV文件
    # data <- read.csv("data.csv")
  • 文本文件 (Tab/Space delimited)read.table()
    R
    # data <- read.table("data.txt", header = TRUE, sep = "\t")
  • Excel文件:需要安装readxl包。
    R
    # install.packages("readxl") # 首次使用需安装
    # library(readxl)
    # excel_data <- read_excel("data.xlsx", sheet = "Sheet1")
  • 其他格式haven包用于SPSS, SAS, Stata文件;jsonlite包用于JSON文件等。

5.2 导出数据

  • CSV文件write.csv()
    R
    # write.csv(df, "output.csv", row.names = FALSE) # row.names=FALSE 避免写入行号
  • 文本文件write.table()
    R
    # write.table(df, "output.txt", sep = "\t", row.names = FALSE)

6. 数据操作与清洗 (使用dplyr包)

在R中,进行数据操作和清洗最流行的选择是tidyverse生态系统,其中核心包是dplyrdplyr提供了一套简洁、一致的函数,用于常见的数据转换任务。

首先,你需要安装和加载tidyverse包(它包含了dplyrggplot2等)。

“`R

install.packages(“tidyverse”) # 首次使用需安装

library(tidyverse)
“`

假设我们有一个数据框sales_data

R
sales_data <- data.frame(
Region = c("East", "West", "East", "North", "West", "South"),
Product = c("A", "B", "A", "C", "B", "A"),
Sales = c(100, 150, 120, 80, 200, 90),
Units = c(10, 15, 12, 8, 20, 9),
Date = as.Date(c("2023-01-01", "2023-01-05", "2023-01-10",
"2023-01-15", "2023-01-20", "2023-01-25"))
)
print(sales_data)

6.1 select():选择列

“`R

选择’Region’和’Sales’两列

selected_cols <- sales_data %>% select(Region, Sales)
print(selected_cols)
“`

6.2 filter():筛选行

“`R

筛选出Sales大于100的记录

high_sales <- sales_data %>% filter(Sales > 100)
print(high_sales)

筛选出Region为”East”且Product为”A”的记录

east_product_A <- sales_data %>% filter(Region == “East” & Product == “A”)
print(east_product_A)
“`

6.3 mutate():创建新列

“`R

创建一个新列’Price_Per_Unit’

sales_data_new <- sales_data %>% mutate(Price_Per_Unit = Sales / Units)
print(sales_data_new)
“`

6.4 arrange():排序数据

“`R

按Sales降序排列

sorted_data <- sales_data %>% arrange(desc(Sales))
print(sorted_data)
“`

6.5 group_by()summarise():分组聚合

这两个函数通常一起使用,用于按一个或多个变量对数据进行分组,然后对每个组进行汇总统计。

“`R

按Region分组,计算每个区域的总销售额

region_sales <- sales_data %>%
group_by(Region) %>%
summarise(TotalSales = sum(Sales), AverageUnits = mean(Units))
print(region_sales)
“`

6.6 join():合并数据框

dplyr提供了left_join(), right_join(), inner_join(), full_join()等函数用于合并数据框。

“`R

假设有另一个数据框,包含区域人口信息

region_info <- data.frame(
Region = c(“East”, “West”, “North”, “South”),
Population = c(1000, 1200, 800, 700)
)

左连接 sales_data 和 region_info

merged_data <- sales_data %>%
left_join(region_info, by = “Region”)
print(merged_data)
“`

7. 基本数据可视化 (使用ggplot2包)

ggplot2是R中用于创建精美图形的强大包,它基于“图形语法”的理念。

首先,确保已加载tidyverse包(因为它包含了ggplot2)。

R
library(ggplot2)

7.1 散点图 (Scatter Plot)

用于显示两个数值变量之间的关系。

“`R

创建一个简单的散点图

ggplot(sales_data, aes(x = Units, y = Sales)) +
geom_point() +
labs(title = “Units vs Sales”, x = “Units Sold”, y = “Total Sales”)
“`

7.2 条形图 (Bar Chart)

用于比较不同类别的数据。

“`R

创建一个按区域显示总销售额的条形图

ggplot(region_sales, aes(x = Region, y = TotalSales)) +
geom_bar(stat = “identity”, fill = “steelblue”) + # stat=”identity”表示y轴值直接取TotalSales
labs(title = “Total Sales by Region”, x = “Region”, y = “Total Sales”)
“`

7.3 直方图 (Histogram)

用于显示单个数值变量的分布。

“`R

创建Sales的直方图

ggplot(sales_data, aes(x = Sales)) +
geom_histogram(binwidth = 20, fill = “darkgreen”, color = “black”) +
labs(title = “Distribution of Sales”, x = “Sales”, y = “Frequency”)
“`

7.4 箱线图 (Box Plot)

用于显示一个或多个分类变量的数值分布。

“`R

按区域显示Sales的箱线图

ggplot(sales_data, aes(x = Region, y = Sales)) +
geom_boxplot(fill = “lightblue”) +
labs(title = “Sales Distribution by Region”, x = “Region”, y = “Sales”)
“`

8. 总结与展望

本文涵盖了R语言数据分析的入门基础,包括环境搭建、基本语法、核心数据结构、数据导入/导出、以及使用dplyr进行数据操作和ggplot2进行数据可视化。这仅仅是R语言强大功能的冰山一角。

下一步学习建议:
* 深入学习tidyverse:探索更多dplyr函数,以及tidyr(数据整理)、stringr(字符串处理)、forcats(因子处理)等包。
* 统计建模:学习如何使用R进行回归分析、假设检验、聚类、分类等。
* 高级可视化:掌握ggplot2的更多高级特性,例如多图布局、交互式图形。
* 函数编写:学习如何编写自己的R函数,提高代码复用性。
* R Markdown:学习如何使用R Markdown创建可重复性的报告和演示文稿。

R语言的世界广阔而精彩,不断实践和探索将是你掌握它的最佳途径。祝你R语言学习之旅愉快!

—I have written the article. Would you like me to do anything else?

滚动至顶部