我试图用R来透视一个包含许多变量和观测值的数据集。
每一行都是一个ID-Year-Outcome三元组。每个ID-年份-亮度三元组具有一个或多个随时间变化的对应颜色。
| ID|年|颜色|亮度|
| --|--|--|--|
| 1 | 2001 |红色|高|
| 1 | 2001 |蓝色|高|
| 1 | 2002 |红色|介质|
| 1 | 2002 |绿色|介质|
| 2 | 2002 |蓝色|低|
| 2 | 2003 |蓝色|介质|
| 2 | 2003 |黄色|介质|
| 3 | 2003 |绿色|高|
| 3 | 2004 |橙子|低|
我想把每个ID-年份-亮度三元组合并到一个单行中,并把“颜色”变量分散在多个列中。
我希望它看起来像这样:
| ID|年|颜色1|颜色2|亮度|
| --|--|--|--|--|
| 1 | 2001 |红色|蓝色|高|
| 1 | 2002 |红色|绿色|介质|
| 2 | 2002 |蓝色||低|
| 2 | 2003 |蓝色|黄色|介质|
| 3 | 2003 |绿色||高|
| 3 | 2004 |橙子||低|
我试过使用pivot_wider和dcast以及cSplit和tidyr::spread,但不幸的是,到目前为止还没有什么对我有用的。
任何帮助将不胜感激!
1条答案
按热度按时间w41d8nur1#
tidyr::pivot_wider()
可以产生您想要的输出。首先,我们需要添加一个列来标识ID
和Year
的每个组合的行号。