对满足条件的行进行计数的R函数

对满足条件的行进行计数的R函数,r,R,我正在尝试创建一个新列,对满足条件的每一列进行计数。这是因为我想在我的硕士论文中总结每个参与者正确答案的数量。我真的是个新手,非常需要帮助,即使是简单的任务 例如: (参与者,任务1,任务2,任务3;计数) 1 4 8 11| 2 3 8 71| 3 1 3 42| 4 5 6 41| 51843 列计数应计算Task1-Task3行的所有正确答案。如果正确答案为(1、8、4),则计数行应产生上述示例中所示的数字 有人能告诉我如何创建这样一个变量吗 非常感谢,谢谢 Luca我们可以使用行和,方法

我正在尝试创建一个新列,对满足条件的每一列进行计数。这是因为我想在我的硕士论文中总结每个参与者正确答案的数量。我真的是个新手,非常需要帮助,即使是简单的任务

例如:

(参与者,任务1,任务2,任务3;计数)

1 4 8 11|

2 3 8 71|

3 1 3 42|

4 5 6 41|

51843

列计数应计算Task1-Task3行的所有正确答案。如果正确答案为(1、8、4),则计数行应产生上述示例中所示的数字

有人能告诉我如何创建这样一个变量吗

非常感谢,谢谢
Luca

我们可以使用
行和
,方法是使向量
c(1,8,4)
的长度与'Task'列的长度相同,并执行a
=
,然后得到
行和

i1 <- startsWith(names(df1), 'Task')
df1$COUNT <-   rowSums(df1[i1] ==  c(1, 8, 4)[col(df1[i1])])
df1$COUNT
#[1] 1 1 2 1 3
或者另一个选项是
apply

df1$COUNT <- apply(df1[i1], 1, function(x) sum(x == c(1, 8, 4)))

df1$COUNT我们可以使用
pmap int
from
purr
来计算正确答案的数量

library(dplyr)

df %>% mutate(COUNT = purrr::pmap_int(select(., starts_with('Task')), 
                               ~sum(c(...) == c(1, 8, 4))))


#  Participant Task1 Task2 Task3 COUNT
#1           1     4     8     1     1
#2           2     3     8     7     1
#3           3     1     3     4     2
#4           4     5     6     4     1
#5           5     1     8     4     3

另一个选择是获取长格式的数据,计算每个
参与者的正确答案数,然后将数据合并回来

df1 %>%
  tidyr::pivot_longer(cols = starts_with('Task')) %>%
  group_by(Participant) %>%
  summarise(COUNT = sum(value == c(1, 8, 4))) %>%
  left_join(df1, by = 'Participant')
library(dplyr)

df %>% mutate(COUNT = purrr::pmap_int(select(., starts_with('Task')), 
                               ~sum(c(...) == c(1, 8, 4))))


#  Participant Task1 Task2 Task3 COUNT
#1           1     4     8     1     1
#2           2     3     8     7     1
#3           3     1     3     4     2
#4           4     5     6     4     1
#5           5     1     8     4     3
df1 %>%
  tidyr::pivot_longer(cols = starts_with('Task')) %>%
  group_by(Participant) %>%
  summarise(COUNT = sum(value == c(1, 8, 4))) %>%
  left_join(df1, by = 'Participant')