【发布时间】:2021-11-10 16:06:22
【问题描述】:
第一次问问题,如果我的格式关闭了,请见谅。
我在网上搜索了 3 天以找到此问题的答案,但一直找不到任何东西。我有一个包含 3 列的数据框:重复随机生成的参与者 ID(例如 W21334D0、B8123K)、问题编号(分类 - 例如 q1、q2、q3)和问题响应(数字和分类 - 例如, "1", "1,2", "15,20,15")。
例如,我将始终给出的数据框是以下形式:
| Participant | question_id | question_answer |
|---|---|---|
| W21334D0 | q1 | 1 |
| W21334D0 | q2 | 1,2 |
| W21334D0 | q3 | 0 |
| W21334D0 | q4 | 1 |
| B8123K | q3 | 1 |
| B8123K | q2 | 2,1 |
| B8123K | q4 | 0 |
| P0213MEW | q1 | 1 |
| P0213MEW | q3 | 0 |
| P0213MEW | q4 | 1 |
| P0213MEW | q2 | 1,2 |
我希望重新排列数据框或创建一个新的数据框,以便每个唯一的参与者 ID 是一行,其中每个唯一的 question_id 是一列,按 q1-q96 的顺序排列。
例如:
| Participant | q1 | q2 | q3 | q4 |
|---|---|---|---|---|
| W21334D0 | 1 | 1,2 | 0 | 1 |
| B8123K | NA | 2,1 | 1 | 0 |
| P0213MEW | 1 | 1,2 | 0 | 1 |
在过去的几天里,我尝试了各种方法,最接近的方法是为每个唯一参与者创建单独的数据框,其中包括参与者 question_ids 和 question_answers 的行(但不是按顺序)。
为此,我做了:
for(i in unique(dat$participant)) {
nam <- paste(i)
assign(nam, t(dat[dat$participant==i,-1]))
}
但是使用这段代码,我不知道如何将数据帧组合成一个数据帧,也不知道如何将行全部按“q1、q2、q3、q4...”的顺序排列
任何帮助将不胜感激!
【问题讨论】:
-
您好,您可以使用 dput(dt) 分享您的示例数据集吗? (如果 dt 是您的数据框的名称)谢谢!
-
感谢罗莎莉的帮助! r2evans 和您的回复都有效!!几天来,我一直在绞尽脑汁寻找答案,我很惊讶每个人都能如此迅速地提供帮助 - 非常感谢!