1、数据框的透视
aggregate()函数用于对数据框进行聚合操作,可以按照指定的条件对数据进行分组,并计算每组的汇总统计量。函数如下:
aggregate(formula,data,FUN,...)
formula:定义聚合的公式,指定需要聚合的变量和分组条件。
data:指定数据框。
FUN:指定要进行聚合操作的函数,如sum,mean,max等。
...:其他可选参数,如na.rm用于忽略缺失值。
# 创建示例数据框
df<-data.frame(
Region=c('North','North','South','South','North','South'),
Crop=c('Wheat','Rice','Corn','Wheat','Rice','Corn'),
Production=c(50000,80000,70000,55000,85000,72000),
Area=c(10000,12000,15000,11000,13000,16000)
)
# 使用aggregate()函数对数据框进行聚合
result<-aggregate(cbind(Production,Area)~Region,
data=df,FUN=mean)
# 显示聚合结果
print(result)
2、数据框的条件筛选
在R语言中,可以使用逻辑条件来查询数据框中满足特定条件的数据子集。常用的方法包括:使用subset()函数或逻辑运算符(例如==,>,<等)结合行列索引来查询数据。
# 创建示例数据框
df<-data.frame(
Region=c('North','North','South','South','North','South'),
Crop=c('Wheat','Rice','Corn','Wheat','Rice','Corn'),
Production=c(50000,80000,70000,55000,85000,72000),
Area=c(10000,12000,15000,11000,13000,16000)
)
# 使用subset()函数查询满足条件的数据
subset_df<-subset(df,Area>11000 & Crop=="Corn")
print(subset_df)
# 使用逻辑运算符查询满足条件的数据
subset_df<-df[df$Area>11000 & df$Crop=="Corn",]
print(subset_df)
3、数据框的处理和清洗
(1)类型转换和重编码
在数据处理过程中,有时需要对数据框的类型进行转换,比如将字符型转换为数值型,日期型转换为字符型等。重编码是指将数据框中的特定值映射为新的值,通常用于创建分类变量。
# 创建示例数据框
df<-data.frame(
Region=c('North','North','South','South','North','South'),
Crop=c('Wheat','Rice','Corn','Wheat','Rice','Corn'),
Production=c(50000,80000,70000,55000,85000,72000),
Area=c('10000','12000','15000','11000','13000','16000')
)
# 类型转换:将字符型Area转换为数值型
df$Area<-as.numeric(df$Area)
# 重编码:将Region列中的"North"替换为1,"South"替换为0
df$Region<-ifelse(df$Region=="North",1,0)
#显示处理后的数据框
print(df)
(2)处理缺失值和重复值
在现实数据中,经常会出现缺失值和重复值。
缺失值是指数据中缺少某些观测值或信息,而重复值是指数据中存在相同的观测记录。
# 创建含有缺失值的示例数据框
df<-data.frame(
Region=c('North','North',NA,'South','North','South'),
Crop=c('Wheat','Rice',NA,'Wheat','Rice','Corn'),
Production=c(50000,80000,NA,55000,85000,72000),
Area=c(10000,NA,15000,11000,13000,16000)
)
# 移除含有缺失值的行
cleaned_df<-na.omit(df)
print(cleaned_df)
# 使用指定值填充缺失值
library(zoo)
cleaned_df<-na.fill(df,fill=0)
print(cleaned_df)
# 使用列的均值填充缺失值
library(tidyr)
cleaned_df<-replace_na(df,
list(Production=mean(df$Production,na.rm=TRUE),
Area=mean(df$Area,na.rm=TRUE)))
print(cleaned_df)
# 创建含有重复值的示例数据框
df<-data.frame(
Region=c('North','North','South','South','North','South'),
Crop=c('Wheat','Rice','Corn','Wheat','Wheat','Corn'),
Production=c(50000,80000,70000,55000,50000,72000),
Area=c('10000','12000','15000','11000','10000','16000')
)
# 移除重复值
cleaned_df<-unique(df)
# 显示处理后的数据框
print(cleaned_df)