基于个体总数为Data Frame添加行及衍生列的技术问题
数据框行扩展解决方案
示例数据构造
先把你给出的表格转换成可运行的R数据框:
df <- data.frame( Species_ID = c("mon", "jon", "sylv", "ter"), Location_ID = c("WH", "IF", "WS", "MB"), Altitude = c(1700, 1850, 2100, 1700), Female = c(3, 5, 7, 20), Male = c(10, 2, 3, 15) )
步骤1:新增个体总数列
用dplyr的mutate()函数计算每行的个体总数:
library(dplyr) df <- df %>% mutate(total = Female + Male)
步骤2:按总数重复行
有两种简洁的实现方式:
- 用tidyr包的uncount函数(专门处理按数值重复行的场景):
library(tidyr) result_df <- df %>% uncount(total) %>% select(Species_ID, Location_ID, Altitude)
- 仅用dplyr实现:
result_df <- df %>% slice(rep(row_number(), total)) %>% select(Species_ID, Location_ID, Altitude)
两种方法都能得到目标结果:每个原始行按个体总数重复对应次数,仅保留指定的三列信息。
内容的提问来源于stack exchange,提问作者Drips
相关产品推荐
相关产品推荐

