基于物种分组对两个数据框应用不同函数的R语言求助
解决方法
核心思路是先把两个数据框按Species关联,再直接套用公式计算,比用if+groupby更简洁高效。
方法一:Base R 实现
# 按Species合并两个数据框,匹配对应物种的Slope和Int merged_data <- merge(df1, df2, by = "Species") # 计算Ws列 merged_data$Ws <- 10^(merged_data$Int + merged_data$Slope * log10(merged_data$Length)) # 保留原df1的列和新生成的Ws(可选) result_df <- merged_data[, c("Species", "Length", "Weight", "Ws")] print(result_df)
方法二:tidyverse(dplyr)实现
如果习惯用tidyverse语法,用left_join关联数据后直接计算:
library(dplyr) result_df <- df1 %>% # 关联df2,匹配对应物种的参数 left_join(df2, by = "Species") %>% # 按公式计算Ws mutate(Ws = 10^(Int + Slope * log10(Length))) %>% # 保留需要的列 select(Species, Length, Weight, Ws) print(result_df)
两种方法都会得到如下结果:
Species Length Weight Ws 1 BRK 184 83 81.56054 2 BRK 167 87 63.43294 3 RGN 191 82 82.04674 4 RGN 193 84 84.47097
内容的提问来源于stack exchange,提问作者Rnchriz
相关产品推荐
相关产品推荐

