【发布时间】:2020-09-16 08:25:07
【问题描述】:
我有一个包含复杂列 results 的数据集作为(character 类)。
数据样本为here。
date_agenda id_question id_event results
2020-09-04 202009043 7426 "2:1:3|3:1:3|4:8:4|5:1:4|6:7:0|7:7:4|8:7:3|9:3:0|10:8:4|11:1:0|12:8:4|13:8:4|14:8:1|15:1:3|16:1:0|17:1:3|18:1:3|"
2020-09-04 202009044 7427 "2:1:3|3:1:3|4:8:4|5:1:4|6:7:0|7:7:4|8:7:3|9:3:0|10:8:4|11:1:0|12:8:4|13:8:4|14:8:3|15:1:3|16:1:0|17:1:3|18:1:3|"
2020-09-04 202009046 7428 "2:1:1|3:1:1|4:8:4|5:1:4|6:7:0|7:7:4|8:7:1|9:3:0|10:8:4|11:1:0|12:8:4|13:8:4|14:8:3|15:1:1|16:1:0|17:1:1|18:1:1|"
我想将results 和整个数据框从宽格式转换为长格式,将最后一列results 分成三个数字列。
例如,2:1:3 是 results 中的一个事件,而此列中有数百个此类事件。
我想要的输出:
date_agenda id_question id_event mp_id mp_fraction result
2020-09-04 202009043 7426 2 1 3
2020-09-04 202009043 7426 3 1 3
2020-09-04 202009043 7426 4 8 4
2020-09-04 202009043 7426 5 1 4
2020-09-04 202009043 7426 6 7 0
基本上,初始宽格式(4 列)的一行将转换为长格式(6 列)的数百行。
我知道应该使用pivot_longer、pivot_wider(或gather 和spread)和melt 来完成,但不确定我现在是否具备逻辑。 我是否应该先将字符分成数百列,然后使其变宽或其他。
欣赏提示!谢谢!
【问题讨论】:
-
请以可重复的形式提供您的输入数据。
-
嗯,这并不是这里所说的可重现的意思。 stackoverflow.com/questions/5963269/…
-
@sindri_baldur,我得到了答案,非常感谢您的宝贵时间!
标签: r tidyverse tidyr reshape2