【发布时间】:2020-09-02 22:19:39
【问题描述】:
我正在尝试排除符合排除标准的数据(参与者):排除超过 10% 的响应时间小于 300 毫秒的数据(参与者)。
所以让它更容易理解,这里是一个数据的例子(假的)(假设数据名称是 MyData):
structure(list(ID = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L
), .Label = c("rladb11", "rladb7"), class = "factor"), blocknum = c(1L,
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 1L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L, 4L), latency = c(322L, 277L, 243L, 188L,
642L, 155L, 122L, 233L, 280L, 142L, 834L, 243L, 332L, 243L, 275L,
432L, 524L, 534L, 143L, 533L, 242L, 234L, 523L, 142L)), class = "data.frame", row.names = c(NA,
-24L))
所以我们有变量——ID、Block(1-4)、延迟。 延迟衡量的是他们在正确响应之前所花费的时间。
我需要做的是排除响应太快以至于我们认为他们没有注意的参与者 (ID)。因此,其标准是如果在 第 2、3 块期间有超过 10% 的响应 小于 300 毫秒,他们将被排除在外。
但是这里提供的数据是原始(假)数据。我们的主要数据——总结——是分开的。所以我们需要一份被排除在外的名单。
如何获取不符合条件的参与者 ID 的列表?
所以有了这个数据集,我们想看看结果,
rladb7
--------(旧)数据问题如下------------
我试图通过使用子集函数来做到这一点
如果latencyPercent 大于10%,则最后打印。
然后对所有 100~ 名参与者做同样的事情,找出那些做得太快的人。
但问题是:
- 执行这种排除方法的工作量太大——效率不高——仅将所有 100~ 个参与者的数据逐个子集化。
- 我不应该计算他们对第 1、4 块的响应(只需要第 2,3 块的响应)
我对 R 编程非常陌生,所以任何帮助都会非常有帮助和感激..!!有没有人对如何有效排除这些有很好的建议?
【问题讨论】:
-
请使用
dput添加数据并显示相同的预期输出。请阅读有关how to ask a good question 的信息以及如何提供reproducible example。 -
@RonakShah 我无法提供真实数据,因为这将侵犯隐私和机密性......目前一切都非常模糊,因为我对那里的功能知之甚少。这就是为什么我要解释这些概念并给出一个“例子”并希望有任何建议。所以,我的简单问题是(也许这会是一个更好和简单的问题)我怎样才能排除参与者/ID(每个人在整个多行)不符合条件的人(第 2、3、4 块中超过 10% 的响应为
-
好吧,您分享的“示例”应该使用
dput分享,而不是像我在第一条评论中发布的链接中解释的那样作为图像分享。我们需要数据来测试我们的解决方案。我们不能使用图像来测试它。 -
我明白了!我刚刚使用 dput 添加了一个数据示例!