📜  R – 数据帧(1)

📅  最后修改于: 2023-12-03 15:04:45.284000             🧑  作者: Mango

R – 数据框介绍

R语言中,数据框(data frame)是一种存储数据的对象类型。数据框类似于Excel表格,它包含多个行和列,每一列可以是不同的变量(如数值、字符、因子等),每一行包含每个变量的一个观察值。

创建数据框

R中创建数据框可以使用data.frame()函数。如下例:

# 创建一个数据框
df <- data.frame(
  name = c("Alice", "Bob", "Chris", "Dave"),
  age = c(25, 30, 35, 40),
  grade = c(70, 80, 90, 85),
  stringsAsFactors = FALSE
)

# 输出数据框
print(df)

输出结果:

   name age grade
1 Alice  25    70
2   Bob  30    80
3 Chris  35    90
4  Dave  40    85
读取/导入数据框

R中可以读取多种数据源生成数据框,如.csv.txt.xls等文件格式。具体的函数有read.csv()read.table()read_excel()等等,通过这些函数将外部数据载入R环境中。例:

# 读取csv格式的数据,生成名为df的数据框
df <- read.csv("test.csv", header = TRUE)

# 预览数据
head(df)
数据框的操作

在实际数据分析过程中,我们需要对数据框进行各种各样的操作,如筛选、排序、分组、汇总、合并等。这里简单介绍其中的一些操作方式。下面的例子假设我们已经读入了外部测试数据test.csv,数据均为数值型。

数据框的基本操作
# 获取数据框的结构
str(df)

# 获取数据框的维度
dim(df)

# 获取数据框的变量名称
names(df)

# 获取数据框的摘要信息
summary(df)
数据框的筛选
# 筛选出age大于30的记录
subset(df, age > 30)

# 筛选出age大于30且grade大于80的记录
subset(df, age > 30 & grade > 80)

# 选择指定列,并筛选出age大于30的记录
subset(df, age > 30, select = c("name", "grade"))
数据框的排序
# 按照age升序排序
df[order(df$age), ]

# 按照age降序排序
df[order(-df$age), ]
数据框的分组
# 按照age分组,并统计每组的记录数
table(cut(df$age, breaks = c(0, 25, 30, 35, Inf)))

# 按照age分组,并统计每组的平均分
tapply(df$grade, cut(df$age, breaks = c(0, 25, 30, 35, Inf)), mean)
数据框的汇总
# 计算grade的最小值、最大值、平均值、标准差
summarize(df, min = min(grade), max = max(grade), mean = mean(grade), sd = sd(grade))
数据框的合并
# 创建另一个数据框,用于与前面的数据框进行合并
df2 <- data.frame(
  name = c("Eve", "Frank", "Grace", "Henry"),
  age = c(28, 33, 38, 43),
  grade = c(75, 85, 95, 90),
  stringsAsFactors = FALSE
)

# 将两个数据框合并
df3 <- merge(df, df2, all = TRUE)

# 预览合并后的数据
print(df3)

输出结果:

   name age grade
1 Alice  25 70.00
2   Bob  30 80.00
3 Chris  35 90.00
4  Dave  40 85.00
5   Eve  28 75.00
6 Frank  33 85.00
7 Grace  38 95.00
8 Henry  43 90.00