如何在这个数据框中,将A因素a、b水平的val.1值相乘,再乘以val.2在A因素b水平的值?所得结果生成一列为C?
Deepseek给出的结果是符合我目标的,但像这种引用方式val.1[A == "a"]语法太繁琐,如果目标算式再复杂一点就很影响阅读了。应该如何修改?
## 原始数据
df <- data.frame(
A = c("a","a","a","a","b","b","b","b"),
val.1 = c(12,3,13,14,24,13,12,11),
val.2 = c(2,3,4,5,2,3,4,5),
other_col = c("x", "y", "z", "w", "x", "y", "z", "w"))
## 计算新列C
df_result <- df %>%
group_by(A) %>% # 按A分组
mutate(group_row = row_number()) %>% # 为每组添加行号
group_by(group_row) %>% # 按行号对齐组
mutate(
C = val.1[A == "a"] * val.1[A == "b"] * val.2[A == "b"] # 跨组计算
) %>%
ungroup() %>% # 解除分组
select(-group_row) # 移除临时行号列
## 输出结果
print(df_result)