【发布时间】:2021-05-28 01:51:17
【问题描述】:
我有一个数据集,我的子集如下所示:
| Item | Code | Percentage |
|---|---|---|
| 10000 | 123 | 0.2 |
| 10001 | 134 | 0.98 |
| 10001 | 152 | 0.02 |
| 10002 | 123 | 0.68 |
| 10003 | 123 | 1 |
| 10002 | 178 | 0.32 |
| 10004 | 189 | 1 |
我想找到一种转置方式,只保留 A 列中的唯一值,B 列根据唯一值分散到不同的列中,百分比填充在这些值中。请查看我希望最终确定的数据示例:
| Item | 123 | 134 | 152 | 178 | 189 |
|---|---|---|---|---|---|
| 10000 | 0.2 | 0 | 0 | 0 | 0 |
| 10001 | 0 | 0.98 | 0.02 | 0 | 0 |
| 10002 | 0.68 | 0 | 0 | 0.3 | 0 |
| 10003 | 1 | 0 | 0 | 0 | 0 |
| 10004 | 0 | 0 | 0 | 0 | 1 |
我目前使用的格式如下“骨架”:
df <-df %>%
group_by(Item) %>%
mutate(n = row_number()) %>%
spread(Code, Percentage)
按照这种结构,我仍然会在 A 列中得到重复的值(不是唯一的)。我确实加载了库(plyr) 图书馆(dplyr)图书馆(tidyr)按此顺序。我提到的原因是,如果您切换它的工作顺序,我会在某处阅读,但最终会弄乱结果。
如果您需要更多信息,请告诉我。谢谢!
【问题讨论】:
-
plyr 已经退役几年了。您可以使用 tidyr 来做到这一点,它的语法也从
spread更新为pivot_wider。关于同一任务有很多 SO 问题;我会挖一些来标记 -
大家好!非常感谢你的帮助!这两种选择对我来说都很容易解决!真的很感激! :)