1、数据框的增删改查
(1)新增或删除行列
R的基础包中使用rbind()函数新增行,使用[-行索引,]的方式从数据框中删除列,使用$的方式新增或删除列。
# 创建一个示例数据框
df<-data.frame(
Region=c("south","north","east"),
crop=c("maize","wheat","rice"),
yield=c(4500,3900,2700)
)
new_row=c('west','soybean',1700)
# 新增一行
df<-rbind(df,new_row)
print(df)
# 删除第2行
df<-df[-2,]
print(df)
# 新增一列
df$area<-c(85,92,78)
print(df)
# 删除列
df$crop<-NULL
print(df)
(2)修改数据
要修改数据框中的数据,可以使用行列索引或列名索引的方式来定位要修改的数据,并赋予新的执行。
# 创建一个示例数据框
df<-data.frame(
Name=c("Alice","Bob","Charlie"),
Age=c(25,30,22),
Gender=c("Female","Male","Male"),
Score=c(85,92,78)
)
print(df)
# 修改数据框中的数据
df[2,"Age"]<-31
df$Score[3]<-80
# 显示数据框
print(df)
2、数据框的合并和拆分
(1)按行合并数据框
R语言中,使用rbind()函数按行合并数据框
# 创建示例数据框1
df1<-data.frame(
region=c("A","B","C"),
yield=c(25,30,22)
)
# 创建示例数据框2
df2<-data.frame(
region=c("D","E"),
yield=c(28,27)
)
# 按行合并数据框
merged_df<-rbind(df1,df2)
print(merged_df)
(2)按列合并数据框
R语言中,使用cbind()函数按行合并数据框
# 创建示例数据框1
df1<-data.frame(
region=c('A','B','C'),
crop=c('maize','wheat','rice')
)
# 创建示例数据框2
df2<-data.frame(
yield=c(4500,3900,2700),
area=c(85,92,78)
)
# 按列合并数据框
merged_df<-cbind(df1,df2)
print(merged_df)
(3)拆分数据框
使用split()函数根据数据框中选定列的不同取值将数据框拆分为多个子数据框。
# 创建示例数据框
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)
)
# 拆分数据框为多个子数据框,按照Region列的不同取值拆分
sub_dfs<-split(df,df$Region)
print(sub_dfs)
3、数据框的排序和重塑
使用order()函数按照数据框中选定列的数据大小对数据框进行排序。
# 创建示例数据框
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)
)
# 按照Region列对数据框进行升序排序
sorted_df<-df[order(df$Region),]
print(sorted_df)
使用melt()函数将数据框转换为长格式
# 创建示例数据框
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)
)
# 将数据框转换为长格式
melted_df<-melt(df,id.vars='Region')
print(melted_df)