我有数据框:
df <- tibble(value_2024 = runif(4), value_2023 = runif(4), value_2022 = runif(4), selection = c(2023, 2022, 2024, 2022))
我想按行计算列 value_2022 : value_n 的总和,其中 n 是列选择中的值。
我做到了:
df %>% mutate(value_sum = rowSums(across(value_2022:ends_with(as.character(df$selection)))))
这当然会发出警告数字表达式有 4 个元素:仅使用第一个元素。我确实理解这个警告,也知道为什么会发生,但我不知道如何解决它。
也许你可以尝试一下
rowwise
df %>%
rowwise() %>%
mutate(value_sum = rowSums(across(value_2022:ends_with(as.character(.$selection)[cur_group_rows()]))))
这给出了
# A tibble: 4 × 5
# Rowwise:
value_2024 value_2023 value_2022 selection value_sum
<dbl> <dbl> <dbl> <dbl> <dbl>
1 0.897 0.908 0.661 2023 1.57
2 0.266 0.202 0.629 2022 0.629
3 0.372 0.898 0.0618 2024 1.33
4 0.573 0.945 0.206 2022 0.206