r - 在 tidyverse 中分离新列中的重复数据
问题描述
我有一个大型数据库,许多数据是重复的,我想为这些数据生成两个新列。
这里有一个简要的数据
df <- tribble(~ID, ~Code,
1, "p",
1, "p",
2, "f",
3, "p",
2, "p",
3, "f",
4, "f",
4, "p",
6, "p")
我想得到以下数据:
Out1 Out2
1 p p
2 f p
3 p f
4 f p
5 p NA
解决方案
一种方法是:
df %>%
group_by(ID) %>%
mutate(temp = paste0("Out", seq_along(ID))) %>%
spread(temp, Code)
ID Out1 Out2
<dbl> <chr> <chr>
1 1 p p
2 2 f p
3 3 p f
4 4 f p
5 6 p <NA>
如果您还想更改 ID:
df %>%
group_by(ID) %>%
mutate(temp = paste0("Out", seq_along(ID))) %>%
spread(temp, Code) %>%
ungroup() %>%
mutate(ID = seq_along(ID))
ID Out1 Out2
<int> <chr> <chr>
1 1 p p
2 2 f p
3 3 p f
4 4 f p
5 5 p <NA>
推荐阅读
- python - Lambda 函数抛出一个异常说 unhashable type: 'dict': TypeError
- three.js - Three.js 多层和带效果器的选择性照明
- python - Python 创建列表的列表覆盖但不追加
- android - 失败 [INSTALL_FAILED_INVALID_APK: 启动程序包未安装 tob 状态为关闭
- python - 选择不同的编号。基于计数的 pandas 数据帧中的随机行
- php - 如何禁用特定路线的油门?(拉拉维尔)
- xml - Windows 配置设计器 - 配置失败
- r - 格式化数据框中的值
- python - 3d 绘图用在哪个领域?
- wpf - 拖动时WPF突出显示背景