首页 > 解决方案 > 使用 R 传播具有非唯一键的数据

问题描述

我有以下数据框:

ID 团体
1 一个
1
2 C
2 D

我想在 ID 方面将数据框重塑为更广泛的版本。因此,新的数据框如下所示:

ID 第 1 组 第 2 组
1 一个
2 C D

标签: r

解决方案


您可以通过添加帮助列然后使用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

推荐阅读