【发布时间】:2014-02-06 18:27:39
【问题描述】:
通常,我会为此使用一个非常基本的从长到宽的重塑,但它似乎正在删除我的聚合变量。设置是我有一份关于机械土耳其人的工作,我一式三份地执行了一项工作——我希望 MTurk1、Mturk2、MTurk3 的答案是数据框中自己的变量,但由我在工作中输入的字段唯一标识,所以我可以稍后用一个函数将它们相互比较。
当前格式:
> head(mturk)
AssignmentStatus Input.id Input.State Answer.Q1thing
1 Approved 134231 NY Myguess
2 Approved 134231 NY Myguess
3 Approved 134231 NY BadGuess
4 Submitted 134812 CA Another
5 Approved 134812 CA Another
6 Approved 134812 CA Another
我想变成这样
Input.id Input.State Answer.Q1thing.1 Answer.Q1thing.2 Answer.Q1thing.3 AssignmentStatus.1 AssignmentStatus.2 AssignmentStatus.3
134231 NY Myguess Myguess BadGuess Approved Approved Approved
134812 CA Another Another Another Submitted Approved Approved
或者理想情况下,如果有一个变量可以在操作中重做列名......
Id State Answer1 Answer2 Answer3 Status1 Status2 Status3
134231 NY Myguess Myguess BadGuess Approved Approved Approved
134812 CA Another Another Another Submitted Approved Approved
dat <- reshape(mturk, timevar="Answer.Q1thing", idvar=c("Input.id", "Input.state"), direction="wide")
这似乎失败了,因为大多数 reshape long-to-wide 函数都期望变宽的变量本身是一个分类文本字段——也就是说,这不是 long-to-wide reshape 操作,因为我不不想要一个名为“MyGuess”、“BadGuess”和“Another”的变量,但我想要一个包含这些值的通用“Answer.X”变量。我没有尝试以任何方式进行聚合,例如平均值或总和,只是在新位置列出值。
所以,这个问题有两个方向:
- 这种操作还有别的名字吗?这是展开、未转折、未投射还是什么?
- 如何在 R 中做到这一点?
【问题讨论】:
标签: r reshape mechanicalturk