R语言中如何使用另一数据框的值对数据框指定列进行计算?
问题原因
你代码无法得到预期结果的核心原因是:直接调用完整的Constant数据框参与乘法计算,没有根据Category字段匹配对应类别的k值,导致计算逻辑不匹配。
解决方案
方案1:使用dplyr关联表后计算(最直观)
先通过关联操作把对应类别的k值匹配到实验数据表中,再直接计算z即可,无需提前分组:
library(dplyr) # 按Category关联常量表,匹配对应k值后计算z df <- df %>% left_join(Constant, by = "Category") %>% mutate(z = k * y) # 如果不需要保留k列,可在mutate后加 select(-k) 删除
方案2:base R 原生实现
不想依赖dplyr的话,可以用match函数匹配对应k值后计算:
df$z <- Constant$k[match(df$Category, Constant$Category)] * df$y
两种方案计算结果一致:Category为a的行k=1,z与y取值相同;Category为b的行k=2,z为y的2倍,符合你的计算规则。
内容的提问来源于stack exchange,提问作者Daniel Valencia C.
相关产品推荐
相关产品推荐

