📅  最后修改于: 2023-12-03 15:04:45.284000             🧑  作者: Mango
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