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)