我有以下 5 个数字步骤的数据:
test_data <- tribble(
~one, ~two, ~three, ~four, ~five,
1, 2, 3, 4, 5,
2, 4, 6, 8, 10,
3, 6, 9, 12, 15,
4, 8, 12, 16, 20
)
我想乘以以下数据框:
multiplier <- tribble(
~step, ~pct,
"one", 0,
"two", 1,
"three", 0,
"four", 1,
"five", 0
)
这样我就得到了下面的“结果”列:(即,根据中的定义,只添加了五个步骤中的某些步骤multiplier
)
> result_df
# A tibble: 4 x 6
one two three four five result
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 2 3 4 5 6
2 2 4 6 8 10 12
3 3 6 9 12 15 18
4 4 8 12 16 20 24
这是一个简单示例,包含 5 个步骤和 100% 乘数,因此使用 可轻松选择和添加特定列rowSums
。但是,问题是我正在处理一个包含 c. 40 个步骤和一些百分比(0% < x < 100%)的真实数据集。因此,我需要一个“求和乘积”样式的函数。
我尝试了以下方法:
test_data %>%
rowwise() %>%
mutate(result = prod(one:five, multiplier$pct))
并得到错误答案。此外,我尝试过,crossprod
但我知道这类似于矩阵乘法。
dplyr 风格的解决方案将非常受欢迎。谢谢。
使用矩阵乘法:
给予
这也有效