首页 文章

从网格坐标中找到正确的平均数

提问于
浏览
0

我试图计算参与者在记忆任务中得分正确的平均数 . 我有一个名为 RecallType 的专栏,它告诉我参与者是通过前向记忆回忆(称为 forwards )还是通过向后记忆回忆(称为 backwards )进行评估 . 我还有一个名为 ProbeState 的列,它标识了内存任务的类型,其中有两个 . 在本专栏中,我有 positionsdigits . 这些都是我感兴趣的变量 .

内存任务本身被分为两列 . Recall.CRESP 是一个列,用于指定通过网格坐标选择的内存测试的正确答案 . Recall.RESP 显示参与者的回复 .

这些列看起来像这样:

|Recall.CRESP                     | Recall.RESP                     |
|---------------------------------|---------------------------------|                 
|grid35grid51grid12grid43grid54   | grid35grid51grid12grid43grid54  |                
|grid11gird42gird22grid51grid32   | grid11gird15gird55grid42grid32  |

因此,例如在该表的第1行中,参与者得到5/5正确,因为 Recall.CRESP 的网格坐标与 Recall.RESP 匹配 . 但是在第2行中,参与者只有2/5正确,因为只有第一个和最后一个网格坐标是相同的 . 坐标的顺序必须匹配才能正确 .

理想情况下,我希望从任何回应中学习 . 如果您回复,请提出一些意见 .

谢谢 .

2 回答

  • 1

    由于您是 stackoverflow 的新手,请阅读此处有关如何制作可重现示例的答案,以便您的问题清晰:How to make a great R reproducible example? .

    根据我的理解,你正在寻找拆分你的字符串然后计算相同的情况 . 一些让你开始的代码如下:

    a = "grid11gird42gird22grid51grid32"
    b = "grid11gird15gird55grid42grid32"
    
    a1 = strsplit(a, "grid|gird")
    b1 = strsplit(b, "grid|gird")
    table(unlist(a1) == unlist(b1))["TRUE"] - 1
    

    您应该能够使用包 dplyrgroup_bysummarize 功能通过您感兴趣的变量取平均值 .

  • 1

    尝试使用 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")
    

相关问题