【发布时间】:2022-01-18 19:50:24
【问题描述】:
我有一个类似于以下示例的表:
| Person | Date | VarA | VarD | VarC | VarB |
|---|---|---|---|---|---|
| Erik | 2020-12-31 | 5 | 7 | 3 | 12 |
| Erik | 2021-03-31 | 6 | 4 | 4 | 15 |
| Simon | 2020-12-31 | 9 | 8 | 5 | 17 |
| Simon | 2021-03-31 | 11 | 2 | 3 | 16 |
表中的变量数量可能会有所不同。我想创建一个通用的 R 脚本,可用于计算分子和分母中任意数量变量之和之间的比率。使用 {Var}、{P1} 和 {P2} 指定并包含在 R 脚本中的变量列表以及应在分子和分母中求和的变量列表(参见下面的代码)。
我写了以下代码:
#{Var} is replaced by a list of all variables, in this case "VarA, VarD, VarC, VarB"
Variablelist <- str_split("{Var}", ", ", simplify = TRUE)
#{P1} and {P2} are replaced by lists of the positions of the variables in Variablelist that should be included, for example "1, 3, 4"
NumeratorSum <- Variablelist[c({P1})]
DenominatorSum <- Variablelist[c({P2})]
InputDataSet <- InputDataSet %>%
dplyr::rowwise() %>%
dplyr::mutate(ResultRatio = sum(NumeratorSum, na.rm=TRUE) / sum(NumeratorSum, na.rm=TRUE))
OutputDataSet <- InputDataSet %>%
dplyr::select(Person, Date, ResultRatio)
例如,如果 {P1}="1, 3, 4" 和 {P2}="2, 3" 那么 ResultRatio 应该等于 sum(VarA, VarC, VarB)/sum(VarD, VarC) .
但是,代码不起作用,我需要帮助来了解如何在 sum 函数中引用列表 NumeratorSum 和 DenominatorSum,以便对表中与这些列表中的元素同名的列求和。
【问题讨论】: