我正在尝试计算在记忆任务中得分正确的平均参与者数量。我有一个名为RecallType
的专栏,它告诉我参与者是通过前向记忆回忆(称为forwards
)还是通过向后记忆回忆(称为backwards
)进行评估的。我还有一个名为ProbeState
的列,它标识了内存任务的类型,其中有两个。在本专栏中,我有positions
和digits
。这些都是我感兴趣的变量。
内存任务本身分为两列。Recall.CRESP
列指定通过网格坐标选择的内存测试的正确答案。Recall.RESP
显示参与者的反应。
这些列如下所示:
|Recall.CRESP | Recall.RESP |
|---------------------------------|---------------------------------|
|grid35grid51grid12grid43grid54 | grid35grid51grid12grid43grid54 |
|grid11gird42gird22grid51grid32 | grid11gird15gird55grid42grid32 |
因此,例如在此表的第 1 行中,参与者获得了 5/5 的正确值,因为Recall.CRESP
的网格坐标与Recall.RESP
匹配。然而,在第 2 行中,参与者只得到了 2/5 的正确,因为只有第一个和最后一个网格坐标是相同的。坐标的顺序必须匹配才能正确。
理想情况下,我很想从任何回应中学习。如果您确实回复,请提出一些评论。
谢谢。
由于您是stackoverflow
新手,请阅读此处有关如何制作可重现示例的答案,以便您的问题清楚:如何制作一个出色的 R 可重现示例?
据我了解,您希望拆分字符串,然后计算相等的情况。下面有一些代码可以帮助您入门:
a = "grid11gird42gird22grid51grid32"
b = "grid11gird15gird55grid42grid32"
a1 = strsplit(a, "grid|gird")
b1 = strsplit(b, "grid|gird")
table(unlist(a1) == unlist(b1))["TRUE"] - 1
您应该能够使用包dplyr
的group_by
和summarize
功能来取感兴趣的变量。
尝试使用regmatches
fun=function(x)do.call(rbind,regmatches(x,gregexpr(".*?\d.",x)))
with(dat,rowSums(fun(Recall.CRESP)==fun(Recall.RESP)))
[1] 5 2
数据:
structure(list(Recall.CRESP = c("grid35grid51grid12grid43grid54",
"grid11grid42grid22grid51grid32"), Recall.RESP = c("grid35grid51grid12grid43grid54",
"grid11grid15grid55grid42grid32")), .Names = c("Recall.CRESP",
"Recall.RESP"), row.names = c(NA, -2L), class = "data.frame")