学习R语言第一步:基础知识详解 – wiki基地


学习R语言第一步:基础知识详解

欢迎来到R语言的世界!如果你对数据分析、统计计算、数据可视化感兴趣,或者仅仅是对编程充满好奇,那么学习R语言是一个非常棒的选择。R因其强大的统计能力、丰富的可视化库以及活跃的社区支持,已成为数据科学领域不可或缺的工具。

本文将带你踏上R语言学习之旅的第一步,深入讲解R语言最核心、最基础的知识。这些基础知识是后续学习一切高级技巧和应用的地基。打牢它们,你将能更顺畅地掌握R的强大功能。

我们将涵盖以下内容:

  1. 什么是R语言,以及为什么要学习它?
  2. R和RStudio:你的工作环境
  3. R语言的基本语法
  4. R语言的数据类型
  5. R语言的核心数据结构:向量、列表、矩阵、数据框等
  6. 基础操作与内置函数
  7. 获取帮助与管理包
  8. 一个简单的实战演练

准备好了吗?让我们开始吧!

第一章:踏上R语言之旅:初识与准备

1.1 什么是R语言?

R语言是一种专门用于统计计算、数据分析和数据可视化的编程语言和环境。它由新西兰奥克兰大学的 Ross Ihaka 和 Robert Gentleman 于20世纪90年代创立,是S语言的一个开源实现。

R语言的特点:

  • 强大的统计能力: R拥有海量统计模型和分析技术的内置函数及扩展包,几乎涵盖了所有的统计方法。
  • 优秀的数据可视化: R的图形功能非常强大,特别是 ggplot2 包,可以创建出精美、复杂的统计图形。
  • 开源免费: R是GNU项目的一部分,可以免费获取和使用,这意味着你可以自由地安装、运行、学习、修改和分发它。
  • 跨平台: R可以在Windows、macOS和Linux等多种操作系统上运行。
  • 活跃的社区: R拥有一个庞大而活跃的社区,你可以轻松找到帮助、教程和最新的研究成果。
  • 丰富的扩展包(Packages): 这是R语言最强大的地方之一。全球的科学家和开发者贡献了大量的扩展包,用于完成各种特定的任务,如机器学习、生物信息学、金融分析、网络爬虫等等。

1.2 为什么要学习R语言?

  • 数据科学领域的主流工具: 无论是在学术界还是工业界,R语言都被广泛应用于数据清洗、转换、建模、分析和报告。
  • 强大的统计和可视化能力: 如果你的工作或学习涉及大量的数据分析和统计推断,R几乎是最佳选择。
  • 职业发展: 掌握R语言是进入数据分析师、数据科学家、统计师等相关职业的重要技能。
  • 解决实际问题: 无论是分析销售数据、研究基因表达、预测市场趋势还是进行社会学调查,R都能提供强大的支持。

1.3 R和RStudio:你的工作环境

虽然你可以直接在R的命令行界面(Console)中工作,但强烈推荐使用RStudio。

  • R (Base R): 就像汽车的引擎,它是R语言解释器本身,执行你的代码。
  • RStudio: 就像汽车的驾驶舱,它是一个集成开发环境(IDE),为R提供了更友好的界面和更便捷的功能,包括代码编辑器、控制台、变量查看器、文件浏览器、帮助文档查看器等。

安装步骤(简述):

  1. 安装R: 访问 CRAN (Comprehensive R Archive Network),选择适合你操作系统的版本进行下载和安装。
  2. 安装RStudio: 访问 RStudio官方网站,下载对应的桌面版本(通常选择免费的RStudio Desktop)。安装R之后再安装RStudio。

安装完成后,打开RStudio,你将看到一个包含多个面板的界面,这就是你学习和使用R语言的主要工作台。

第二章:熟悉你的工作台:RStudio环境概览

RStudio的默认界面通常包含四个主要面板(pane),它们可以根据你的需要进行布局调整。理解这些面板的功能对于高效学习R至关重要。

  1. Source Pane (左上角):

    • 这是你编写R脚本(.R文件)的地方。编写代码而不是直接在控制台输入的好处是可以保存你的工作,方便重复执行、修改和分享。
    • 你可以运行选中行或整个脚本。
    • 这是你构建复杂程序或分析流程的主要区域。
  2. Console Pane (左下角,或与Source pane并列):

    • 这是R语言解释器直接交互的地方。你可以在这里输入R代码,按Enter键立即执行,并看到结果。
    • 当你在Source面板中运行代码时,代码会发送到Console中执行。
    • 它会显示代码的输出、警告和错误信息。
    • 前面会有一个 > 提示符,表示R正在等待你的输入。
  3. Environment/History Pane (右上角):

    • Environment (环境): 显示当前R会话中创建的所有对象(变量、函数、数据框等)。你可以看到对象的名称、类型以及部分内容(例如,向量的几个元素,数据框的维度)。这帮助你了解当前有哪些数据可用。
    • History (历史): 记录你在Console中执行过的所有命令。你可以方便地查找并重新执行之前的命令。
  4. Files/Plots/Packages/Help/Viewer Pane (右下角):

    • Files (文件): 一个文件浏览器,用于导航你的文件系统。你可以通过它打开脚本、查看数据文件等。它也显示你的当前工作目录(Working Directory)。
    • Plots (图): 当你生成图表时,图表会显示在这里。你可以缩放、导出或删除图表。
    • Packages (包): 列出所有已安装的R扩展包。你可以查看哪些包已加载,以及安装、更新或删除包。
    • Help (帮助): 显示R的帮助文档。当你查找某个函数的使用方法时,帮助文档会在这里打开。
    • Viewer (查看器): 用于显示本地的网页内容,例如由 rmarkdown 生成的交互式文档。

基本工作流程:

  • 在Source面板编写代码(例如,保存为 my_script.R)。
  • 选择要执行的代码行,按 Ctrl + Enter (Windows/Linux) 或 Cmd + Enter (macOS) 将代码发送到Console执行。
  • 在Console中查看代码输出、结果或错误。
  • 在Environment面板中检查新创建的变量和数据。
  • 如果生成了图表,在Plots面板查看。
  • 需要某个函数的帮助?在Console中输入 ?function_name,帮助文档会在Help面板打开。

第三章:R语言的基石:基本语法与数据类型

掌握编程语言的基础语法是编写代码的前提,理解数据类型则是操作数据的核心。

3.1 基本语法规则

  • 区分大小写: R语言严格区分大小写。 my_variableMy_Variable 是两个不同的变量。函数名、包名也一样。
  • 赋值操作符: 最常用的是 <- (小于号加上减号)。例如: x <- 10 表示将值 10 赋给变量 x。你也可以使用 =,但在某些上下文(如函数参数)中 = 有特殊含义,因此推荐使用 <- 进行变量赋值,这在R社区是更常见的风格。
  • 注释: 使用 # 符号。# 后面的内容直到行尾都会被R忽略,用于解释代码。这是一个非常好的习惯!
    R
    # 这是一个注释
    my_variable <- 10 # 变量赋值
  • 语句分隔: 一行通常就是一个语句。如果一个语句太长需要跨行,可以在运算符或逗号后换行。多个短语句可以在同一行用 ; 分隔,但不推荐,会降低可读性。
  • 函数调用: 函数名(参数1, 参数2, ...)。例如: print("Hello, R!")
  • 空格: R通常不强制要求特定数量的空格,但在运算符两侧、函数参数逗号后添加空格可以提高代码的可读性。

3.2 R语言的基本数据类型

R语言有多种基本数据类型,它们定义了数据存储的种类。理解它们是理解R数据结构的基础。

  1. Numeric (数值型): 这是最常见的数值类型,包括整数和浮点数(带小数)。
    R
    # 默认是 numeric
    x <- 10.5
    y <- 10 # 虽然是整数,但默认也是 numeric
    class(x) # 输出: "numeric"
    class(y) # 输出: "numeric"

  2. Integer (整型): 专门用于存储整数。在数字后面加上 L 明确表示为整型。
    R
    z <- 10L
    class(z) # 输出: "integer"
    is.integer(z) # 输出: TRUE
    is.numeric(z) # 输出: TRUE (整型是数值型的一种)

  3. Logical (逻辑型): 存储布尔值,即 TRUE(真)或 FALSE(假)。也可以用缩写 TF,但不推荐,因为 TF 可以被用户重新赋值。
    R
    is_true <- TRUE
    is_false <- FALSE
    class(is_true) # 输出: "logical"
    1 == 1 # 输出: TRUE
    1 > 2 # 输出: FALSE

  4. Character (字符型/字符串): 存储文本数据,用双引号 "" 或单引号 '' 包围。
    R
    my_string <- "Hello, R World!"
    another_string <- 'Data Analysis'
    class(my_string) # 输出: "character"

  5. Complex (复数型): 存储复数,包含实部和虚部。对初学者不常用。
    R
    my_complex <- 1 + 2i
    class(my_complex) # 输出: "complex"

  6. Raw (原生型): 存储字节数据,通常用于底层操作,对初学者不常用。

你可以使用 class() 函数来检查任何R对象的类型。

第四章:数据的容器:R语言核心数据结构

R语言提供了多种数据结构来组织不同类型的数据。理解这些结构及其特点对于高效处理数据至关重要。

4.1 Vector (向量)

  • 向量是R中最基本的数据结构,用于存储同一种类型的数据元素的集合。
  • 使用 c() 函数(combine 或 concatenate 的缩写)创建向量。
  • 向量中的元素是有序的。
  • 如果试图将不同类型的数据放入同一个向量,R会自动进行强制类型转换,转换为所有元素都能表示的“最高”类型(优先级通常是:Character > Complex > Numeric > Integer > Logical)。

示例:

“`R

数值型向量

numeric_vector <- c(1, 5, 3.14, 100)
class(numeric_vector) # 输出: “numeric”
length(numeric_vector) # 输出: 4

字符型向量

character_vector <- c(“apple”, “banana”, “cherry”)
class(character_vector) # 输出: “character”

逻辑型向量

logical_vector <- c(TRUE, FALSE, TRUE, TRUE)
class(logical_vector) # 输出: “logical”

混合类型 – 会强制转换

mixed_vector <- c(1, “hello”, TRUE)
class(mixed_vector) # 输出: “character”
print(mixed_vector) # 输出: “1” “hello” “TRUE” (数字和逻辑值被转换为字符串)

访问向量元素:使用方括号 [] 和索引。R的索引从 1 开始!

numeric_vector[1] # 输出: 1
character_vector[2] # 输出: “banana”
logical_vector[c(1, 4)] # 访问多个元素,输出: TRUE TRUE
numeric_vector[-2] # 排除第二个元素,输出: 1.00 3.14 100.00
numeric_vector[numeric_vector > 5] # 逻辑索引,输出: 100
“`

4.2 List (列表)

  • 列表是R中另一种重要的数据结构,它可以存储不同类型的数据元素的集合。
  • 列表的元素可以是向量、矩阵、数据框、甚至其他的列表。
  • 使用 list() 函数创建列表。

示例:

“`R

创建一个列表,包含不同类型的元素

my_list <- list(
name = “Alice”, # 字符型
age = 30, # 数值型
is_student = FALSE, # 逻辑型
scores = c(95, 88, 92), # 数值型向量
matrix_data = matrix(1:4, nrow = 2) # 矩阵
)
class(my_list) # 输出: “list”

访问列表元素:

使用 [[ ]] 访问元素本身

my_list[[1]] # 输出: “Alice”
my_list[[“name”]] # 输出: “Alice” (如果元素有名称)
my_list[[4]] # 输出: 95 88 92 (访问 scores 向量)

使用 $ 访问具名元素

my_list$name # 输出: “Alice”
my_list$scores # 输出: 95 88 92

使用 [ ] 访问列表的一个或多个“子列表”

my_list[1] # 输出: list(“Alice”) (结果仍然是一个列表)
my_list[c(“name”, “age”)] # 输出: list(name=”Alice”, age=30) (结果仍然是一个列表)

访问列表中元素的内部元素

my_list$scores[1] # 输出: 95 (访问 scores 向量的第一个元素)
my_list[[5]][1, 2] # 输出: 3 (访问 matrix_data 矩阵的第一行第二列)
``
理解
[ ],[[ ]], 和$在访问列表时的区别非常重要。[[ ]]$用于提取列表中的**单个元素**,而[ ]` 总是提取一个子列表

4.3 Matrix (矩阵)

  • 矩阵是一个二维的数据结构,所有元素必须是同一种类型
  • 矩阵有行和列。
  • 使用 matrix() 函数创建矩阵。

示例:

“`R

创建一个 2×3 的数值型矩阵

my_matrix <- matrix(
data = 1:6, # 数据,按列填充
nrow = 2, # 行数
ncol = 3, # 列数 (可选,会自动计算)
byrow = FALSE # 默认按列填充,设为 TRUE 则按行填充
)
print(my_matrix)

输出:

[,1] [,2] [,3]

[1,] 1 3 5

[2,] 2 4 6

按行填充的矩阵

my_matrix_row <- matrix(1:6, nrow = 2, byrow = TRUE)
print(my_matrix_row)

输出:

[,1] [,2] [,3]

[1,] 1 2 3

[2,] 4 5 6

访问矩阵元素:使用方括号 [] 和 [行索引, 列索引]

my_matrix[1, 2] # 输出: 3 (第一行第二列)
my_matrix[, 1] # 输出: 1 2 (访问第一列,结果是向量)
my_matrix[2, ] # 输出: 2 4 6 (访问第二行,结果是向量)
my_matrix[1, c(1, 3)] # 访问第一行的第一列和第三列,输出: 1 5
my_matrix[c(1, 2), c(1, 3)] # 访问第一、二行的第一、三列,输出一个子矩阵

输出:

[,1] [,2]

[1,] 1 5

[2,] 2 6

“`

4.4 Data Frame (数据框)

  • 数据框是R中最重要、最常用的数据结构,尤其适用于存储表格型数据(如来自CSV文件或数据库的数据)。
  • 数据框可以看作是一个特殊的列表,其中每个元素是长度相等的向量,这些向量构成了数据框的列。
  • 不同列(向量)可以存储不同类型的数据,但同一列内部的数据必须是同一种类型(向量的性质)。
  • 数据框有行名和列名。
  • 使用 data.frame() 函数创建数据框。

示例:

“`R

创建一个数据框

students <- data.frame(
name = c(“Alice”, “Bob”, “Charlie”), # 字符型向量
age = c(25, 30, 22), # 数值型向量
is_enrolled = c(TRUE, FALSE, TRUE) # 逻辑型向量
)
print(students)

输出:

name age is_enrolled

1 Alice 25 TRUE

2 Bob 30 FALSE

3 Charlie 22 TRUE

class(students) # 输出: “data.frame”
str(students) # 查看数据框的结构 (非常有用!)

‘data.frame’: 3 obs. of 3 variables:

$ name : chr “Alice” “Bob” “Charlie”

$ age : num 25 30 22

$ is_enrolled: logi TRUE FALSE TRUE

访问数据框元素:

访问列 (常用 $ 或 [[ ]]),结果是向量

students$name # 输出: “Alice” “Bob” “Charlie”
students[[“age”]] # 输出: 25 30 22
students[, 1] # 输出: “Alice” “Bob” “Charlie”

访问列 (使用 [ ] ),结果是数据框

students[“name”] # 输出: data.frame(name = c(“Alice”, “Bob”, “Charlie”))

访问行 (使用 [行索引, ]),结果是数据框 (除非只有一列且使用了 drop=TRUE)

students[1, ] # 输出: 一行的数据框

name age is_enrolled

1 Alice 25 TRUE

访问特定单元格

students[1, 2] # 输出: 25 (第一行第二列的值)
students[3, “name”] # 输出: “Charlie” (第三行name列的值)

逻辑索引 – 过滤数据框 (非常常用!)

找出所有 enrolled 的学生

enrolled_students <- students[students$is_enrolled == TRUE, ]
print(enrolled_students)

name age is_enrolled

1 Alice 25 TRUE

3 Charlie 22 TRUE

找出年龄大于25的学生

older_students <- students[students$age > 25, ]
print(older_students)

name age is_enrolled

2 Bob 30 FALSE

“`

4.5 Array (数组)

  • 数组是向量、矩阵的泛化,可以存储同一种类型的、具有多个维度的数据。
  • 矩阵是二维数组的特例。
  • 使用 array() 函数创建数组。初学者不常用。

示例:

“`R

创建一个 2x3x2 的三维数组

my_array <- array(
data = 1:12,
dim = c(2, 3, 2) # 维度:2行,3列,2层/片
)
print(my_array)

访问数组元素:[行索引, 列索引, 维度1索引, 维度2索引, …]

my_array[1, 2, 1] # 访问第一片的第一行第二列
“`

4.6 Factor (因子)

  • 因子用于存储分类数据(Categorical Data)。
  • 虽然看起来像字符型向量,但因子在内部存储的是整数,并关联一个“水平”(levels)集合,表示所有可能的类别。
  • 这使得因子在统计建模中特别有用,因为R会根据因子自动进行哑变量编码。
  • 使用 factor() 函数创建因子。

示例:

“`R

字符型向量

gender_char <- c(“male”, “female”, “male”, “female”, “male”)
class(gender_char) # 输出: “character”

转换为因子

gender_factor <- factor(gender_char)
print(gender_factor)

输出:

[1] male female male female male

Levels: female male (注意默认按字母顺序排列水平)

class(gender_factor) # 输出: “factor”
levels(gender_factor) # 输出: “female” “male”
“`
理解数据结构之间的差异和用途是使用R进行数据处理的关键。向量、列表和数据框是你在日常工作中会频繁打交道的数据结构。

第五章:操作数据:基础运算与函数

学习了数据类型和数据结构,接下来就要学习如何对这些数据进行操作。

5.1 基础运算符

R支持常见的算术、比较和逻辑运算符,并且这些运算符通常是“向量化”的,这意味着它们可以直接应用于整个向量,而无需编写循环。

  • 算术运算符: + (加), - (减), * (乘), / (除), ^** (乘方), %% (取余), %/% (整除)
    R
    a <- c(1, 2, 3)
    b <- c(4, 5, 6)
    a + b # 输出: 5 7 9 (对应元素相加)
    a * 2 # 输出: 2 4 6 (每个元素乘以 2)
    10 %% 3 # 输出: 1 (10 除以 3 的余数)
    10 %/% 3 # 输出: 3 (10 除以 3 的整数部分)

  • 比较运算符: > (大于), < (小于), == (等于), != (不等于), >= (大于等于), <= (小于等于)
    这些运算符返回逻辑型向量。
    R
    c(1, 5, 3) > 2 # 输出: FALSE TRUE TRUE
    c("apple", "banana") == "apple" # 输出: TRUE FALSE

  • 逻辑运算符: & (逻辑与), | (逻辑或), ! (逻辑非)
    用于组合逻辑条件。&&|| 是它们的特殊形式,只比较第一个元素,常用于 if 语句。
    R
    logic1 <- c(TRUE, FALSE, TRUE)
    logic2 <- c(TRUE, TRUE, FALSE)
    logic1 & logic2 # 输出: TRUE FALSE FALSE (对应元素进行逻辑与)
    logic1 | logic2 # 输出: TRUE TRUE TRUE (对应元素进行逻辑或)
    !logic1 # 输出: FALSE TRUE FALSE

5.2 R的内置函数

R提供了大量的内置函数来执行各种任务。函数是一段封装好的代码,接收输入(参数),执行特定操作,并返回输出。

  • 调用函数: 函数名(参数1, 参数2, ...)。参数可以按位置传递,也可以按名称传递(参数名 = 值)。按名称传递可以不考虑参数的顺序,提高了代码的可读性。

常用基础函数示例:

  • 数学函数: sum(), mean(), median(), sd() (标准差), min(), max(), abs() (绝对值), sqrt() (平方根), log(), exp(), round() (四舍五入) 等。
    R
    data_vector <- c(10, 20, 30, 40, 50)
    mean(data_vector) # 输出: 30
    sum(data_vector) # 输出: 150
    sd(data_vector) # 输出: 15.81139
    round(3.14159, digits = 2) # 输出: 3.14

  • 统计函数: summary() (生成数据概览), table() (计数), quantile() (分位数) 等。
    R
    summary(data_vector) # 输出 Min, 1st Qu, Median, Mean, 3rd Qu, Max
    table(c("A", "B", "A", "C", "B", "A")) # 输出类别计数
    # A B C
    # 3 2 1

  • 字符串函数: nchar() (字符串长度), paste() (连接字符串), substr() (提取子字符串), grep() (查找匹配模式的字符串) 等。
    R
    paste("Hello", "World") # 输出: "Hello World"
    paste("Hello", "World", sep = "_") # 输出: "Hello_World"
    nchar("R Language") # 输出: 10

  • 数据结构函数: c(), list(), matrix(), data.frame(), factor() (创建), length() (长度), dim() (维度), names() (获取/设置名称), colnames(), rownames(), class(), str() (结构) 等。

  • 序列生成: seq() (生成序列), rep() (重复)
    R
    seq(1, 10, by = 2) # 从 1 到 10,步长为 2,输出: 1 3 5 7 9
    1:5 # 简写,输出: 1 2 3 4 5
    rep("A", times = 5) # 重复 "A" 5次,输出: "A" "A" "A" "A" "A"
    rep(c(1, 2), each = 3) # 重复向量,每个元素重复3次,输出: 1 1 1 2 2 2

掌握如何查找和使用这些内置函数是提高R编程效率的关键。

第六章:获取帮助与管理包:持续学习的关键

R语言的功能之所以如此强大,很大程度上得益于其庞大的扩展包生态系统。学习如何获取帮助和管理这些包是R学习过程中必不可少的一部分。

6.1 如何获取帮助

当你忘记了某个函数的用法,或者想了解某个概念时,R的帮助系统是你的第一个求助对象。

  • 精确查找函数帮助: 如果你知道函数名,可以使用 ?help()
    R
    ?mean # 打开 mean() 函数的帮助页面
    help("mean") # 和上面等价

    帮助页面通常包含函数描述、使用方法(Usage)、参数说明(Arguments)、详细信息(Details)、返回值(Value)、示例(Examples)等部分。请务必查看 Examples 部分,它们是理解函数用法的绝佳途径。

  • 模糊查找: 如果你不确定函数名,或者想查找某个主题,可以使用 ??help.search()
    R
    ??regression # 搜索包含 "regression" 关键词的帮助页面
    help.search("plotting") # 搜索 plotting 相关主题

  • 查看函数示例: example() 函数会运行帮助文档中的示例代码。
    R
    example(plot) # 运行 plot() 函数的示例

  • 在线资源: R社区非常活跃,stackoverflow.com、R-help邮件列表、各类R博客和教程网站都是获取帮助和学习的宝库。

6.2 R的扩展包 (Packages)

  • 什么是包? 包是R函数、数据、编译代码和文档的集合,以特定格式存储。它们扩展了R的基础功能。
  • CRAN (Comprehensive R Archive Network): 大多数常用的R包都发布在CRAN上,这是R包的官方仓库。
  • Bioconductor: 专注于生物信息学领域的包仓库。
  • GitHub: 许多开发者在GitHub上分享尚未发布到CRAN或Bioconductor的开发中或特定用途的包。

安装和加载包:

  1. 安装包: 使用 install.packages() 函数从CRAN安装包。只需要安装一次(除非需要更新)。
    R
    install.packages("ggplot2") # 安装用于数据可视化的 ggplot2 包
    install.packages(c("dplyr", "readr")) # 安装多个包

    安装时,RStudio会询问你选择一个CRAN镜像,选择离你地理位置近的即可。

  2. 加载包: 在每个新的R会话中,你需要使用 library()require() 函数来加载已安装的包,才能使用其中的函数。
    R
    library(ggplot2) # 加载 ggplot2 包
    require(dplyr) # 加载 dplyr 包 (功能类似 library,但不常用)

    通常推荐使用 library()。如果加载成功,包中的函数就可以直接使用了(例如,加载 ggplot2 后,就可以使用 ggplot() 函数)。

  3. 查看已安装和已加载的包:
    R
    installed.packages() # 查看所有已安装的包
    search() # 查看当前已加载(在搜索路径中)的包

包管理是R学习和使用的日常任务。当你需要某个特定功能时(例如,处理 Excel 文件,进行某个特定的统计检验,绘制某种图表),第一步通常是搜索是否有现成的R包可以完成任务。

第七章:实战演练:将基础知识串联起来

理论知识学习得再多,也需要通过实践来巩固。我们来做一个简单的实战演练,使用前面学到的基础知识。

场景: 你有一些关于几个城市天气的数据(城市名称、温度、湿度)。你想把这些数据存储起来,计算平均温度,并找出湿度最高的城市。

“`R

1. 创建数据:使用向量和数据框

创建三个向量,分别存储城市名称、温度和湿度

cities <- c(“Beijing”, “Shanghai”, “Guangzhou”, “Shenzhen”, “Chengdu”)
temperatures <- c(25, 28, 30, 29, 26)
humidity <- c(60, 65, 75, 70, 62)

将这些向量组合成一个数据框

weather_data <- data.frame(
City = cities,
Temperature = temperatures,
Humidity = humidity
)

2. 查看数据框的结构和内容

print(weather_data)
str(weather_data)
summary(weather_data)

3. 进行基础计算:计算平均温度

average_temp <- mean(weather_data$Temperature)
print(paste(“平均温度是:”, average_temp, “摄氏度”)) # 使用 paste() 连接字符串和数值

4. 数据筛选和查找:找出湿度最高的城市

找到湿度的最大值

max_humidity <- max(weather_data$Humidity)

找到湿度等于最大值的数据行 (逻辑索引)

highest_humidity_city_row <- weather_data[weather_data$Humidity == max_humidity, ]

提取城市名称

highest_humidity_city_name <- highest_humidity_city_row$City

print(paste(“湿度最高的城市是:”, highest_humidity_city_name))

5. 尝试一些其他操作 (可选)

找出温度大于 28 度的城市

hot_cities <- weather_data[weather_data$Temperature > 28, ]
print(“温度大于 28 度的城市:”)
print(hot_cities)

向数据框添加一列,例如,是否湿度高于平均水平

average_humidity <- mean(weather_data$Humidity)
weather_data$Is_Humidity_Above_Avg <- weather_data$Humidity > average_humidity
print(weather_data)
“`

这个简单的例子展示了如何创建数据框,如何使用 $[] 访问数据,如何使用内置函数 (mean, max, paste, print, str, summary) 进行计算和概览,以及如何使用逻辑索引进行数据筛选。这些都是你在R中进行数据分析的常用操作。

第八章:下一步是什么?

恭喜你!你已经了解了R语言最核心的基础知识:数据类型、数据结构以及基础的操作方式。这就像学会了字母和基本的单词,接下来就可以开始学习如何组成句子、写文章了。

在你打牢这些基础之后,可以继续学习以下更进阶的主题:

  1. 控制流: if/else 条件判断,for 循环,while 循环等,让你能够编写更灵活的程序。
  2. 编写函数: 如何将重复的代码块封装成自己的函数,提高代码的复用性。
  3. 数据读写: 如何从 CSV、Excel、数据库等外部文件或来源读取数据,以及如何将结果保存到文件。
  4. 数据操作与清洗: 使用 dplyr, tidyr 等包进行高效的数据转换、整理和清洗。
  5. 数据可视化: 使用 ggplot2 包创建各种精美的数据图表。
  6. 统计建模: 如何在R中进行线性回归、逻辑回归、方差分析等统计分析。

学习编程和数据分析是一个持续的过程,需要不断地实践和探索。当你遇到问题时,不要害怕查阅文档、搜索网络、或者向社区提问。

结论

R语言是一个功能强大且应用广泛的工具,尤其在数据科学领域。掌握其基础知识——包括熟悉RStudio环境、理解基本语法、区分和运用各种数据类型和数据结构、掌握基础运算和函数、学会查阅帮助文档和管理扩展包——是开启你R语言学习之旅的关键。

希望本文为你提供了扎实的第一步指引。记住,最重要是动手实践,不断尝试。随着你对R的深入了解,你会发现它能为你打开一个全新的数据世界。

祝你学习顺利!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部