R与R Studio
- R语言是数据科学和统计分析的语言,适合数据分析和数据可视化。
- R是开源的,拥有丰富的包(packages),可以与优化软件进行交互。
- RStudio 提供了R语言的集成开发环境,支持代码编辑、运行、调试等功能。
- 下载R:CRAN
- 下载RStudio:RStudio Download
R Studio界面基本操作
- 保存/打开代码文件使用
.R
扩展名。 - 保存/打开环境文件使用
.Rdata
扩展名。 - 快捷键操作:
Ctrl + L
: 清除控制台。Ctrl + #
: 专注于panel。Ctrl + Enter
: 运行当前行或选中的行。
R语言基本语法
-
基本运算与赋值
# 加法 add_result <- 3 + 7 # 减法 subtract_result <- 3 - 7 # 除法 divide_result <- 3 / 7 # 乘法 multiply_result <- 3 * 7 # 次方 power_result <- 3 ^ 7 # 赋值 A <- 10 # 向右赋值 B <- 5 # 同上 # 字符串赋值 A_string <- 'This is a valid string' B_string <- "And so is this"
-
向量的生成与索引
# 创建向量 X <- c(1, 2, 3) Y <- c('one', 'two', 'three') # 使用seq()生成序列 sequence_vector <- seq(1, 10, 2) # 使用rep()生成重复元素的向量 repeated_vector <- rep(c(1, 2, 3), 2) # 索引向量 X <- c(4, 5, 6, 7) third_element_X <- X[3] except_second_element_X <- X[-2] second_and_fourth_element_X <- X[c(2, 4)] # 通过索引重新赋值 X[1] <- 14 X[c(2, 4)] <- c(15, 17) # 对向量增加元素 X[5] <- 8
-
向量的运算
# 元素层面上的运算 X <- c(4, 5, 6, 7) elementwise_addition <- X + X elementwise_subtraction <- X - X elementwise_power <- X ^ 3 elementwise_multiplication <- X * X # 向量内积 X %*% X
-
矩阵的生成与索引
# 生成矩阵 X_matrix <- matrix(1:10, nrow = 2, ncol = 5) # 索引矩阵 element <- X_matrix[2, 2] row <- X_matrix[2, ] column <- X_matrix[, 2] specific_elements <- X_matrix[2, c(2, 4)]
-
控制流语句
# if语句 x <- 5 if (x < 7) { x <- 9 } else { x <- 11 } # for循环 sum <- 0 for (i in 1:10) { sum <- sum + i } # while循环 sum <- 0 i <- 1 while (i < 11) { sum <- sum + i i <- i + 1 }
-
用户自定义函数
# 自定义函数 Accumulative <- function(n) { sum <- 0 for (i in 1:n) { sum <- sum + i } return(sum) } result <- Accumulative(10)
DataFrame简介
- 数据框是R中类似于表格的数据结构,每行是一个个体,每列是一个变量。
数据框的创建
library(tibble)
data <- tibble(
age = c(24, 22, 23, 25, 22),
personality = c('g', 'b', 'g', 'b', 'g'),
income = c(2000, 5800, 4200, 1500, 6000)
)
数据框的检索
# 使用$检索
ages <- data$age
# 使用[ ]检索
age_vector <- data['age']
income_vector <- data[["income"]]
# 使用[[ ]]检索(向量形式)
income_vector_direct <- data[[2]]
# 矩阵检索方式
data[2, 3]
data[, 2]
data[4, ]
data[1:3, c('age', 'income')]
数据框的基本操作
-
filter(): 筛选数据框中的行。
filter_data <- filter(data, age > 23)
-
slice(): 根据行号筛选行。
first_ten_rows <- slice(data, 1:10) last_ten_rows <- slice(data, (n() - 9):n())
-
select(): 选择或排除列。
selected_columns <- select(data, age, income) excluded_columns <- select(data, -age, -income)
-
mutate(): 添加新列或修改现有列。
transformed_data <- mutate(data, income_per_age = income / age)
-
arrange(): 对数据框进行排序。
arranged_data <- arrange(data, desc(income))
-
summarize(): 对数据框进行汇总。
summary_data <- summarize(data, avg_income = mean(income, na.rm = TRUE))
数据框分组操作
-
group_by(): 按变量分组数据框。
grouped_data <- group_by(data, personality)
-
分组后的操作: 对分组数据进行操作,如汇总。
summary_by_personality <- summarize(grouped_data, avg_income = mean(income, na.rm = TRUE))
The pipe operator:%>%
- 使用管道操作符将前一步的结果传递给下一步的函数。
count_cuts <- diamonds %>% group_by(cut) %>% mutate(N = n())
ggplot2绘图
- 使用
ggplot2
包进行数据可视化。library(ggplot2) ggplot(data, aes(x = age, y = income)) + geom_point()