基于行进距离添加物种累计数量列的R语言技术需求
解决方案
要生成基于行进距离的累计物种数量列,核心逻辑是:初始距离(0)对应的累计数为该点的物种总数,之后每出现一个新的行进距离,累计数在前一个基础上加1。以下是用dplyr工具实现的代码:
步骤说明
- 确保数据按
distance从小到大排序,保证累计顺序正确 - 计算初始距离(0)的物种总数
- 基于每个距离的唯一排名,生成累计物种数
代码实现
首先加载dplyr包:
library(dplyr)
处理数据并生成目标列:
data_processed <- data %>% # 按距离升序排序,确保累计顺序正确 arrange(distance) %>% mutate( # 计算初始点的物种数量 initial_species_count = n_distinct(binomial[distance == 0]), # 为每个唯一距离分配排名 distance_rank = dense_rank(distance), # 生成累计物种数:初始数 + 距离排名 -1(初始距离排名为1,对应初始数) cumulative_species = initial_species_count + distance_rank - 1 ) %>% # 移除中间辅助列(可选操作) select(-initial_species_count, -distance_rank)
结果验证
- 所有
distance=0的行,cumulative_species值为22,即初始点的物种总数 - 第一个非0距离(3714.77)对应的累计数为23,第二个非0距离(6249.49)为24,以此类推,完全匹配目标列的样式。
内容的提问来源于stack exchange,提问作者Filipe Dias
相关产品推荐
相关产品推荐

