我正在尝试使用dcast函数将数据从long变为wide。将数据从长格式转换为宽格式 - 多个变量
目标是在value.var参数中使用不同的变量,但R不允许我在其中使用多个值。
有没有其他方法可以修复它?我看过其他类似的问题,但我一直没有找到类似的例子。
我送的细节
这里是我当前的数据 数据集 - 世界
+---------+------+--------+--------------+------------+
| Country | Year | Growth | Unemployment | Population |
+---------+------+--------+--------------+------------+
| A | 2015 | 2 | 8.3 | 40 |
| B | 2015 | 3 | 9.2 | 32 |
| C | 2015 | 2.5 | 9.1 | 30 |
| D | 2015 | 1.5 | 6.1 | 27 |
| A | 2016 | 4 | 8.1 | 42 |
| B | 2016 | 3.5 | 9 | 32.5 |
| C | 2016 | 3.7 | 9 | 31 |
| D | 2016 | 3.1 | 5.3 | 29 |
| A | 2017 | 4.5 | 8.1 | 42.5 |
| B | 2017 | 4.4 | 8.4 | 33 |
| C | 2017 | 4.3 | 8.5 | 30 |
| D | 2017 | 4.2 | 5.2 | 30 |
+---------+------+--------+--------------+------------+
我的目标是今年列传递到列的其余部分(增长,失业和人口) 。我正在使用下面的dcast功能。
data_wide <- dcast(world, country ~ year,
value.var=c("Growth","Unemployment","Population"))
理想的结果
+---------+-------------+-------------------+-----------------+-------------+-------------------+-----------------+
| Country | Growth_2015 | Unemployment_2015 | Population_2015 | Growth_2016 | Unemployment_2016 | Population_2016 |
+---------+-------------+-------------------+-----------------+-------------+-------------------+-----------------+
| A | 2 | 8.3 | 40 | 4 | 8.1 | 42 |
| B | 3 | 9.2 | 32 | 3.5 | 9 | 32.5 |
| C | 2.5 | 9.1 | 30 | 3.7 | 9 | 31 |
| D | 1.5 | 6.1 | 27 | 3.1 | 5.3 | 29 |
+---------+-------------+-------------------+-----------------+-------------+-------------------+-----------------+
请勿张贴仅适用于图像。同时发布'dput(X)'的输出,其中X是您的输入数据帧(如果该数据帧较大,则为X的充分削减版本)。没有人可以尝试你的数据,而不用手工输入,而且不能完全确定列的类。 –
我的第一个猜测是尝试'重塑(世界,方向=“宽”,timevar =“年”,idvar =“国家”)' –
嗨@Juan。您实际上可以编辑您的问题,删除您的图像,然后复制粘贴值。另外,正如前面的评论所述,如果你添加了'dput(X)'的结果将会非常有用。这让任何想要提供有效答案的人都更容易。谢谢! – lrnzcig