目录

1.介绍

2.语法

2.1赋值

2.2算数运输

2.3取子集

2.4数据类型

2.4.1标量

2.4.2向量

2.4.2矩阵

2.4.3数组

2.4.4列表

2.4.5因子

2.4.6时间与日期

2.4.7空值NULL和数据缺失NA

2.4.8无限大INF和NAN

2.5数据框

2.5.1数据框的创建

2.5.2访问

2.5.3修改

2.5.4添加

2.5.5删除

2.5.6筛选与排序

2.5.7合并

2.5.8聚合和汇总


1.介绍

R语言是一种广泛使用的统计编程语言,尤其适合数据分析、统计计算和图形绘制。

2.语法

2.1赋值

在R中,赋值操作可以使用 <- 或者 = 来完成。尽管 = 更加直观,但是 <- 在R的历史中更为传统,也被广泛使用。

x <- 5  # 使用 <- 赋值
x = 5   # 使用 = 赋值

2.2算数运输

R支持基本的算术运算,包括加法 +、减法 -、乘法 *、除法 / 和取模(求余数)%%。

a <- 10
b <- 3
print(a + b)  # 加法
print(a - b)  # 减法
print(a * b)  # 乘法
print(a / b)  # 除法
print(a %% b) # 求余

2.3取子集

R提供了多种方法来提取或访问向量、矩阵或数据框中的元素。索引通常使用方括号 [ 和 ]。

vec <- c(1, 2, 3, 4, 5)  # 创建一个向量
print(vec[2])            # 访问第二个元素
print(vec[c(1, 3)])      # 访问第一个和第三个元素
print(vec[-2])           # 访问除了第二个元素之外的所有元素

# 对于数据框
df <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(25, 30, 35),
  stringsAsFactors = FALSE
)
print(df$name)       # 访问name列
print(df[1, ])       # 访问第一行
print(df[, "age"])   # 访问age列

2.4数据类型

R中有几种基本的数据类型,包括标量、向量、矩阵、数组、列表、因子等。

  • 标量:标量是最基本的数据类型,如数字 5
  • 向量:向量是一维的数组,可以存储相同类型的元素。
  • 矩阵:矩阵是二维数组。
  • 数组:数组可以有多个维度。
  • 列表:列表是存储不同类型的元素的有序集合。
  • 因子:因子是用来表示分类变量的数据类型。

2.4.1标量

标量是最简单的数据类型,表示单个值。R中的标量实际上是一个长度为1的向量,它可以是数值型、字符型、逻辑型(布尔型)或复数型。

数值型 (numeric):表示实数,例如 1, 3.14。
整型 (integer):表示整数,例如 1L,这里的 L 表示这是一个整数。
字符型 (character):表示文本字符串,例如 "Hello", "World"。
逻辑型 (logical):表示布尔值,只有两个可能的值:TRUE 和 FALSE。
复数型 (complex):表示复数,例如 1 + 2i。

2.4.2向量

向量是一维数组,可以存储相同类型的元素。向量可以通过 c() 函数创建:

vector <- c(1, 2, 3, 4, 5)  # 数值型向量
char_vector <- c("apple", "banana", "cherry")  # 字符型向量
bool_vector <- c(TRUE, FALSE, TRUE)  # 逻辑型向量

2.4.2矩阵

matrix_data <- matrix(1:6, nrow = 2, ncol = 3)
print(matrix_data)

2.4.3数组

数组是多维的向量,可以有任意数量的维度,并且所有元素必须是同一类型。

array_data <- array(1:12, dim = c(2, 3, 2))
print(array_data)

2.4.4列表

列表是存储不同类型的对象的有序集合。列表可以通过 list() 函数创建:

list_data <- list(name = "Alice", age = 30, hobbies = c("reading", "coding"))
print(list_data)

2.4.5因子

因子是一种特殊类型的向量,用于分类数据。因子可以被标记为有序或无序,并且可以节省内存。

factor_data <- factor(c("low", "medium", "high", "low"))
print(factor_data)

2.4.6时间与日期

R支持多种日期和时间数据类型,如日期 (Date) 和 POSIXct 或 POSIXlt 类型的时间戳。

date_data <- as.Date("2024-01-01")
time_data <- Sys.time()
print(date_data)
print(time_data)

2.4.7空值NULL和数据缺失NA

NULL是一种特殊的值,表示一个不存在的对象或缺失的值。

null_value <- NULL
print(null_value)

NA表示“不可用”或缺失的数据,可以在任何数据类型中出现。

na_value <- NA
print(na_value)

2.4.8无限大INF和NAN

Inf 表示正无穷大,-Inf 表示负无穷大。

inf_value <- Inf
print(inf_value)

NaN 表示“不是一个数”,通常出现在数学运算错误的情况下。

nan_value <- 0/0
print(nan_value)

2.5数据框

数据框是R中最常用的数据结构之一,它类似于数据库表,由行和列组成。每一列代表一个变量,每一行代表一个观测值。

2.5.1数据框的创建

数据框可以通过data.frame函数来创建,该函数接收一系列向量作为参数,这些向量的长度应该相同,代表数据框中的列。每个向量可以有不同的数据类型。

# 创建一个数据框
df <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(25, 30, 35),
  gender = factor(c("Female", "Male", "Male")),  # 因子类型
  height = c(165, 175, 180),  # 数值类型
  stringsAsFactors = FALSE  # 避免将字符串自动转换为因子
)

# 显示数据框
print(df)

2.5.2访问

可以使用多种方式来访问数据框中的元素:

  • 按列名访问:df$column_name 或 df[[column_name]]
  • 按位置访问:df[, column_index] 或 df[[column_index]]
  • 同时访问行和列:df[row_index, column_index]
# 按列名访问
print(df$name)  # 访问name列

# 按位置访问
print(df[, 2])  # 访问第二列

# 同时访问行和列
print(df[1, 2])  # 访问第一行第二列

2.5.3修改

可以使用相同的方式修改数据框中的元素:

# 修改name列为大写
df$name <- toupper(df$name)

# 修改特定元素
df$age[2] <- 31  # 将第二行的年龄改为31

2.5.4添加

可以向数据框中添加新的列或行

# 添加列
df$occupation <- c("Engineer", "Doctor", "Artist")  # 添加职业列

# 添加行
new_row <- data.frame(
  name = "David",
  age = 28,
  gender = "Male",
  height = 178,
  stringsAsFactors = FALSE
)
df <- rbind(df, new_row)  # 在数据框底部添加一行

2.5.5删除

可以使用负索引来删除数据框中的列或行:

# 删除列
df <- df[, -3]  # 删除第三列

# 删除行
df <- df[-4, ]  # 删除第四行

2.5.6筛选与排序

可以使用逻辑条件来筛选数据框中的行:

# 筛选年龄大于30的人
selected_rows <- df[df$age > 30, ]

# 排序
sorted_df <- df[order(df$age), ]  # 按年龄升序排列
sorted_df_desc <- df[order(df$age, decreasing = TRUE), ]  # 按年龄降序排列

2.5.7合并

可以使用merge函数来合并两个数据框,也可以使用rbind或cbind来垂直或水平堆叠数据框。

# 垂直堆叠
df1 <- data.frame(name = "Eve", age = 22, stringsAsFactors = FALSE)
df <- rbind(df, df1)

# 水平堆叠
df2 <- data.frame(hobby = c("Coding", "Reading", "Painting", "Gaming"), stringsAsFactors = FALSE)
df <- cbind(df, df2)

2.5.8聚合和汇总

可以使用aggregate函数或tapply函数来进行数据框的聚合和汇总。

# 按性别汇总平均年龄
agg_result <- aggregate(age ~ gender, data = df, FUN = mean)
print(agg_result)

09-01 13:25