对满足条件的行进行计数的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),则计数行应产生上述示例中所示的数字 有人能告诉我如何创建这样一个变量吗 非常感谢,谢谢对满足条件的行进行计数的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我们可以使用行和,方法
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
frompurr
来计算正确答案的数量
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')