如何使用动态列计算 R 中的行总和

问题描述 投票:0回答:1

我有数据框:

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 个元素:仅使用第一个元素。我确实理解这个警告,也知道为什么会发生,但我不知道如何解决它。

r across rowwise rowsum
1个回答
0
投票

也许你可以尝试一下

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
© www.soinside.com 2019 - 2024. All rights reserved.