r - 使用 R 传播具有非唯一键的数据
问题描述
我有以下数据框:
ID | 团体 |
---|---|
1 | 一个 |
1 | 乙 |
2 | C |
2 | D |
我想在 ID 方面将数据框重塑为更广泛的版本。因此,新的数据框如下所示:
ID | 第 1 组 | 第 2 组 |
---|---|---|
1 | 一个 | 乙 |
2 | C | D |
解决方案
您可以通过添加帮助列然后使用tidyr::pivot_wider()
:
library(dplyr)
library(tidyr)
data <- tibble(
id = c(1, 1, 2, 2),
group = letters[1:4]
)
# Add a helper column to use when pivoting. This uses the row number
# over each subgroup, i.e. over each value of `id`
transformed_data <- data %>%
group_by(id) %>%
mutate(helper = paste0("Group", row_number())) %>%
ungroup()
# Here's what the helper column looks like
transformed_data
#> # A tibble: 4 x 3
#> id group helper
#> <dbl> <chr> <chr>
#> 1 1 a Group1
#> 2 1 b Group2
#> 3 2 c Group1
#> 4 2 d Group2
# Pivot the data using the helper column
transformed_data %>%
pivot_wider(names_from = helper, values_from = group)
#> # A tibble: 2 x 3
#> id Group1 Group2
#> <dbl> <chr> <chr>
#> 1 1 a b
#> 2 2 c d
推荐阅读
- database - 从其他数据库收集日志的数据库?
- tensorflow - TensorFlow 无法加载 mnist
- python-3.x - Python 3 appears to ignore encoding setting for CSV file when built in Sublime Text
- ms-access - SQL查询以选择日期字段为某个周数的记录
- firebase - 如何解决云函数“错误:参数“opStr”不是有效的 QueryComparison。运算符必须是“<”、“<=”、“==”、“>”或“>=”之一。
- vaadin - Vaadin 和 AspectJ - main() 或 init() - 编译器集成
- tsql - 多参数TSQL过程
- git - 使用 git-svn 添加(不创建)远程分支到本地仓库
- oracle11g - Oracle 在提示刷新时给出错误消息
- java - 多线程错误竞争条件问题