如何在R中对CSV文件排序并聚合重复地点的塑料数据
解决R中CSV数据汇总与排序的问题
我来帮你一步步搞定这两个需求,都是日常处理数据时很常用的操作~
一、重复地点的塑料数量汇总(新增总数量和出现次数)
咱们先处理地点汇总的问题,这里最方便的工具是dplyr包(如果还没安装,先跑install.packages("dplyr")安装一下),它的语法清晰易懂,很适合做这类分组统计。
假设你已经把CSV文件导入成了名为df的数据框(比如用df <- read.csv("你的文件路径.csv")导入),接下来只需要两步:
- 按「地点」列分组
- 对每组计算总塑料数和出现次数
具体代码如下:
# 加载dplyr包 library(dplyr) # 生成汇总表 summary_df <- df %>% group_by(地点) %>% summarize( 总塑料物品数 = sum(塑料物品总数), # 汇总该地点的塑料总数 地点出现次数 = n() # 统计该地点出现的次数 ) # 查看结果 print(summary_df)
解释一下:group_by(地点)会把相同地点的行归为一组,summarize()里的sum()用来求和,n()用来统计每组的行数(也就是地点出现的次数)。
如果不想用dplyr,用Base R的aggregate和table也能实现,代码如下:
# 先计算每个地点的总塑料数 total_plastic <- aggregate(塑料物品总数 ~ 地点, data = df, FUN = sum) # 再统计地点出现次数 location_count <- as.data.frame(table(df$地点)) colnames(location_count) <- c("地点", "地点出现次数") # 合并两个表 summary_df_base <- merge(total_plastic, location_count, by = "地点")
二、在R中对CSV文件排序
排序的方法也分两种,同样推荐用dplyr的arrange()函数,或者Base R的order()函数。
方法1:用dplyr排序
# 按「塑料物品总数」升序排序(从小到大) sorted_df_asc <- df %>% arrange(塑料物品总数) # 按「塑料物品总数」降序排序(从大到小) sorted_df_desc <- df %>% arrange(desc(塑料物品总数)) # 如果要按多列排序,比如先按地点升序,再按塑料总数降序 sorted_df_multi <- df %>% arrange(地点, desc(塑料物品总数))
方法2:用Base R排序
# 升序排序 sorted_df_asc_base <- df[order(df$塑料物品总数), ] # 降序排序(加负号) sorted_df_desc_base <- df[order(-df$塑料物品总数), ] # 多列排序 sorted_df_multi_base <- df[order(df$地点, -df$塑料物品总数), ]
排序完成后,如果要把结果保存回CSV文件,用write.csv()即可:
write.csv(sorted_df_desc, "排序后的塑料数据.csv", row.names = FALSE)
这里row.names = FALSE是为了避免把R的行号写入CSV文件。
内容的提问来源于stack exchange,提问作者nico1234
相关产品推荐
相关产品推荐

