如何根据其他列 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))
我有一个数据集,其中包含数百个参与者和对照者对 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))