【发布时间】:2020-03-27 11:38:30
【问题描述】:
我目前在一个心理学实验室工作,并开始对一项任务的响应时间数据进行数据分析。
任务本身进行了多次试验,这使得数据看起来杂乱无章 - 尤其是现在,因为我最初的工作是将所有数据合并到一个数据框中。在数据的垂直方向上,我们可以看到参与 ID 和响应时间。太好了,这些都是重要的信息。但是,我们没有看到试验数字等,而是看到了如下所示的数据:
Participant 1, 23
Participant 1, 22
Participant 1, 25
Participant 2, 36
就像重复的参与者 ID 一样(我们的样本量可以达到数千,因此我们的数据框很长)。我们无法挑选出重要信息,也无法查看哪个试验是哪个。所以,我们想要一个水平的表示。
现在,我使用 R 作为数据分析的手段......但我对 R 有点陌生,这是我第一个使用它的项目。虽然我已经完成了在线 R 课程,但在使用实际数据时,你确实学得最好。
在努力修复我的数据时,我一直在研究 reshape 和 tidyr 包:reshape 有 melt 和 cast 可以帮助我,tidyr 有 pivot_wider,我认为这对我的帮助不只是 melt 和 cast。
我一直在尝试使用我的实际数据中的较小数据框作为测试代码的方法。
pivot_wider
我一开始使用的是 pivot_wider:
newdf1_test %>%
pivot_wider(names_from = name, values_from = V4)
我得到了一个 tibble,但它只有一个参与者的 ID 和一个响应时间值
我还收到一条警告消息,指出 V4 中的值不是唯一定义的,并且我收到了有关如何绕过警告的建议。所有的建议刚刚返回给我一个数据中的错误,其中替换有 1 行,数据有 0。这到底是什么意思?
熔铸
我只是不确定它是如何工作的。当我融化数据框时,我不确定接下来要做什么,因为我看到的仍然是一个长数据框,而不是宽数据框。
melt_testdf <- melt(newdf1_test, name = c("SID", V4 = c("response_time")
我的印象是这会添加两个新变量:SID 和 response_time,这将帮助我创建两个不同的数据表,然后转置它们以使合并的数据框水平。但是,不,返回给我的新数据框显示了名称(具有参与者 ID)、仅具有值 V4 的变量(V4 是最初具有响应时间的列的名称)以及列的值响应时间最终是。
我知道我应该强制转换以进一步重塑数据,但鉴于我已经很困惑,我不想继续。
我该怎么办?我现在对此感到非常困惑,无论我读了多少书,我都无法理解。
【问题讨论】:
-
请显示与尝试的代码和期望结果一致的示例数据。您如何确定试用? BTW - 长数据是大多数数据科学操作(聚合、建模、绘图等)的首选格式。其实是考虑tidy data!
-
在你我之间,这是你在做探索性分析时实际你的数据的格式,因为它被认为是 tidydata。尤其是如果您打算进入 r 进行分析和测试,例如回归、方差分析等。
-
您应该能够执行
spread(),只要您有每个参与者的唯一参与者 ID 和试用 id,即 trial1、trial2 等。 -
请在您的问题中添加reproducible example。
-
@HanselPalencia 这就是刚从大学毕业的志愿者 RA:高级研究人员已经知道他们想要做什么,而且没有时间告诉你。我不完全确定他们为什么想要水平数据,然后我再一次不知道垂直被认为是整洁的。我试过传播,但我得到了唯一的键组合错误。我没有试用信息,但我有帮助的参与者 ID。我只是不确定如何使它工作。
标签: r casting reshape tidyr melt