You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助:按入侵状态分别统计各国白千层记录数并排序

解决方案:按入侵状态统计各国白千层记录数并排序

用R处理的步骤(适配50万条大数据)

1. 安装并加载必要工具包

如果还没安装tidyverse(处理数据的核心包),先执行:

install.packages("tidyverse")

加载包:

library(tidyverse)

2. 读取CSV数据

用read_csv高效读取大文件:

data <- read_csv("Glonaffinal2.csv")

3. 统计排序并拆分结果

以下代码会一次性完成三种入侵状态的统计,再拆分出各自的排序结果:

# 筛选目标状态、分组统计、排序
country_counts <- data %>%
  filter(invasion_status %in% c("introduced", "naturalized", "invasive")) %>%
  group_by(invasion_status, country) %>%
  summarize(record_count = n(), .groups = "drop") %>%
  arrange(invasion_status, desc(record_count))

# 拆分三种状态的结果
introduced_rank <- country_counts %>% filter(invasion_status == "introduced") %>% select(country, record_count)
naturalized_rank <- country_counts %>% filter(invasion_status == "naturalized") %>% select(country, record_count)
invasive_rank <- country_counts %>% filter(invasion_status == "invasive") %>% select(country, record_count)

# 查看结果
introduced_rank
naturalized_rank
invasive_rank

# (可选)导出结果到CSV文件,方便后续查看
write_csv(introduced_rank, "introduced_country_rank.csv")
write_csv(naturalized_rank, "naturalized_country_rank.csv")
write_csv(invasive_rank, "invasive_country_rank.csv")

注意事项

  • 请确认CSV中存储入侵状态的列名是invasion_status,如果实际列名不同(比如status),请替换代码中对应的字段名
  • 若处理50万条记录时遇到内存瓶颈,推荐用data.table包优化速度和内存占用,代码如下:
install.packages("data.table")
library(data.table)

data <- fread("Glonaffinal2.csv")

country_counts <- data[invasion_status %in% c("introduced", "naturalized", "invasive"), 
                       .(record_count = .N), 
                       by = .(invasion_status, country)] %>%
  setorder(-record_count)

# 拆分结果方式类似
introduced_rank <- country_counts[invasion_status == "introduced", .(country, record_count)]

内容的提问来源于stack exchange,提问作者Michele ter Huurne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:27:39