R 语言教程学习笔记
简介
R语言是一种流行的开源编程语言,用于数据分析、可视化和统计建模。它具有简单易学、可扩展性强和灵活性高等优点,因此在学术界和工业界都得到了广泛的应用。
本笔记将介绍R语言的基本语法和关键概念,以及如何使用R进行数据处理和可视化。我们还将提供一些实际案例,帮助读者更好地理解和应用R语言。
安装和配置
首先,您需要安装R语言和集成开发环境(IDE)RStudio。可以从官方网站下载R和RStudio。
安装完成之后,您需要配置RStudio中的设置和插件,以便更好地使用R。
基本语法
R语言的基本语法与其他编程语言非常相似。以下是一些基本概念:
变量和数据类型
在R中,您可以使用赋值运算符'='或'<-'来创建变量。例如,以下代码创建一个名为x的变量,并将其设置为整数值1:
Copy Codex <- 1
R语言支持多种数据类型,包括数字、字符、逻辑、因子等。您可以使用函数typeof()或class()来查看变量的数据类型。例如,以下代码创建一个名为y的变量,并将其设置为字符串值"hello":
Copy Codey <- "hello"
typeof(y) # 输出 "character"
数据结构
R语言支持多种数据结构,包括向量、矩阵、数组、列表和数据框。以下是一些基本概念:
- 向量:用于存储一组相同数据类型的元素。以下代码创建一个名为a的向量,并将其设置为数字1到5:
Copy Codea <- c(1, 2, 3, 4, 5)
- 矩阵:用于存储二维表格数据。以下代码创建一个名为b的矩阵,并将其设置为3行2列的矩阵:
Copy Codeb <- matrix(c(1, 2, 3, 4, 5, 6), nrow=3, ncol=2)
- 数组:用于存储多维数组数据。以下代码创建一个名为c的数组,并将其设置为3行2列2层的数组:
Copy Codec <- array(c(1:12), dim=c(3, 2, 2))
- 列表:用于存储不同数据类型的元素。以下代码创建一个名为d的列表:
Copy Coded <- list(name="Bob", age=25, married=TRUE)
- 数据框:用于存储二维表格数据,每列可以具有不同的数据类型。以下代码创建一个名为e的数据框,并将其设置为姓名、年龄和已婚状态列:
Copy Codee <- data.frame(name=c("Bob", "Alice", "John"), age=c(25, 30, 35), married=c(TRUE, FALSE, TRUE))
控制流
R语言支持多种控制流语句,包括if-else、for、while和repeat等。以下是一些基本概念:
- if-else:用于根据条件执行不同的语句。以下代码根据变量x的值输出不同的结果:
Copy Codeif (x > 0) {
print("x is positive")
} else if (x < 0) {
print("x is negative")
} else {
print("x is zero")
}
- for:用于循环一定次数执行相同的语句。以下代码循环变量i从1到5,并输出变量i的值:
Copy Codefor (i in 1:5) {
print(i)
}
- while:用于根据条件循环执行相同的语句。以下代码循环变量j从1开始,直到变量j的值大于10并输出变量j的值:
Copy Codej <- 1
while (j <= 10) {
print(j)
j <- j + 1
}
函数
函数是R语言中的核心概念之一。您可以使用函数来实现特定的任务,并可以自己编写函数来扩展R语言的功能。以下是一个示例:
Copy Code# 计算两个数的和
add <- function(a, b) {
return (a + b)
}
result <- add(3, 4)
print(result) # 输出 7
数据处理和可视化
R语言提供了各种包和函数,用于数据处理和可视化。以下是一些常用的包和函数:
数据处理
- dplyr包:用于数据清洗和转换。以下代码使用dplyr包中的filter()函数来选择数据框e中年龄大于30的记录:
Copy Codelibrary(dplyr)
result <- e %>% filter(age > 30)
print(result)
- tidyr包:用于数据重塑和整理。以下代码使用tidyr包中的pivot_longer()函数来将宽格式转换为长格式:
Copy Codelibrary(tidyr)
result <- data.frame(x=c(1, 2), y=c(3, 4))
result_long <- result %>% pivot_longer(cols=c('x', 'y'), names_to='var', values_to='val')
print(result_long)
可视化
- ggplot2包:用于绘制高质量的图形。以下代码使用ggplot2包中的geom_bar()函数来绘制柱状图:
Copy Codelibrary(ggplot2)
data <- data.frame(name=c("Bob", "Alice", "John"), score=c(80, 90, 85))
ggplot(data, aes(x=name, y=score)) +
geom_bar(stat="identity")
- plotly包:用于绘制交互式图形。以下代码使用plotly包中的plot_ly()函数来绘制散点图:
Copy Codelibrary(plotly)
data <- data.frame(x=c(1, 2, 3), y=c(4, 5, 6))
plot_ly(data, x=~x, y=~y, type="scatter", mode="markers")
实例
以下是一个实际案例,演示如何使用R语言进行数据处理和可视化。
分析停车位使用情况
假设您是一家餐馆的经理,希望了解餐馆停车场的使用情况,以便优化餐馆运营。您有一个CSV文件,其中包含每个小时的停车位使用情况。您想要计算出每天各时段停车位的平均使用率,并绘制可视化图表。
以下是R语言代码示例:
Copy Code# 导入数据
parking <- read.csv("parking.csv")
# 转换数据结构
parking_long <- parking %>% pivot_longer(cols=2:25, names_to='hour', values_to='utilization')
# 计算平均使用率
parking_long <- parking_long %>% group_by(date, hour) %>% summarize(mean(utilization))
# 绘制可视化图表
ggplot(parking_long, aes(x=hour, y=`mean(utilization)`, color=date)) +
geom_line() +
scale_x_discrete(limits=0:23)
该代码首先将CSV文件导入为数据框,然后使用tidyr包中的pivot_longer()函数将宽格式转换为长格式。接下来,使用dplyr包中的group_by()和summarize()函数计算出每天各时段停车位的平均使用率。最后,使用ggplot2包中的geom_line()函数绘制可视化图表,并使用scale_x_discrete()函数设置x轴的限制。
该可视化图表能够直观地展示餐馆停车场的使用情况,帮助经理更好地了解餐馆运营情况。