如何根据其他列 R 中的值对一列中的值求和?

How to sum values in one column based on values in other columns R?

我有一个数据集,其中包含数百个参与者和对照者对 26 个问题的回答。 每个参与者都有 26 个与他们相关的问题,他们回答是 (1)、否 (-1)、可能 (0) 或没有回答 (NA)

对于每个参与者,我想汇总他们对所有 26 个问题的所有具体回答,并将其保存到一个新列中。 因此,如果他们在 26 次中有 12 次回答是 (1),那么新列中应该包含数字 12——忽略否 (-1) 值。

我已经尝试过 for 循环、if else 语句、子设置、group by 和 sum 等。我只是想不出如何遍历 26 个问题中的每一个并仅对他们的问题求和——忽略其他参与者.

编辑:这是代码的典型示例。

      ID PatientResponse ControlResponse QuestionNumber
1 122047               1               0              1
2 123274              -1              -1              1
3 186223               1               1              1
4 122047               0              -1              2
5 123274               1              -1              2
6 186223              -1               0              2

这是一张图片,展示了一个问题对于不同参与者的表现:https://i.stack.imgur.com/ojGGO.png

在为每个参与者总结了所有 26 个问题之后,我希望它看起来像这样:https://i.stack.imgur.com/W6Qo3.png

library(dplyr); library(tidyr)

# this will give the count of each kind of response in its own column
df %>%
  count(Question, Participant, Control) %>%
  pivot_wider(names_from = Control, values_from = n)

#if you just want Yes's counted
df %>%
  group_by(Question, Participant) %>%
  summarize(Summed_Yes_Responses = sum(Control == 1, na.rm = TRUE))