如何消除重复的行,将信息保存到 R 的另一列中?

Vic*_*hin 2 r dataframe dplyr data.table tidyverse

我试图从数据集中删除重复项,但我发现这些行并不完全相同。因此,我试图保留信息并生成另一列。例如,假设我有以下数据:

df <- data.frame(id = c("a", "a", "b", "c", "c", "d"),
                color = c("red", "blue", "green", "blue", "green","red"))

> df
  id color
1  a   red
2  a  blue
3  b green
4  c  blue
5  c green
6  d   red
Run Code Online (Sandbox Code Playgroud)

现在,我希望没有重复的 ID,因此我希望额外的信息位于另一列上。结果应该是这样的:

> df2
  id color color2
1  a   red   blue
2  b green       
3  c  blue  green
4  d   red   
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以实现这一点?

小智 5

这是执行此操作的一种方法tidyverse包执行此操作的一种方法

\n
library(dplyr)\nlibrary(tidyr)\n\ndf %>%\n  mutate(n = row_number(),\n         .by = id) %>%\n  pivot_wider(\n    names_from = n,\n    names_prefix = \'color_\',\n    values_from = color\n  )\n#> # A tibble: 4 \xc3\x97 3\n#>   id    color_1 color_2\n#>   <chr> <chr>   <chr>  \n#> 1 a     red     blue   \n#> 2 b     green   <NA>   \n#> 3 c     blue    green  \n#> 4 d     red     <NA>\n
Run Code Online (Sandbox Code Playgroud)\n

创建于 2023-10-18,使用reprex v2.0.2

\n