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

基于物种分组对两个数据框应用不同函数的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 08:30:58