У меня есть data.frame
, который не является уникальным для подмножества его столбцов, и я хочу получить уникальную часть неуникальных столбцов и соответствующую совокупность (через collapse
) уникальных столбцов.
Вот пример:
library(dplyr)
set.seed(1)
df <- data.frame(v1=rnorm(5), v2=rnorm(5), v3=rnorm(5), id=paste0("id",1:5))
#Replicate a couple of rows adding different ids:
df <- df %>% rbind(df[sample(5,2,replace = F),] %>% dplyr::mutate(id=paste0("id",6:7)))
> df
v1 v2 v3 id
1 -0.6264538 -0.8204684 1.5117812 id1
2 0.1836433 0.4874291 0.3898432 id2
3 -0.8356286 0.7383247 -0.6212406 id3
4 1.5952808 0.5757814 -2.2146999 id4
5 0.3295078 -0.3053884 1.1249309 id5
6 -0.8356286 0.7383247 -0.6212406 id6
7 0.3295078 -0.3053884 1.1249309 id7
Поскольку реплицированы строки 3 и 5, результирующее data.frame
будет:
> data.frame(df[1:5,] %>% dplyr::select(-id),id=c("id1","id2","id3,id6","id4","id5,id7"))
v1 v2 v3 id
1 -0.6264538 -0.8204684 1.5117812 id1
2 0.1836433 0.4874291 0.3898432 id2
3 -0.8356286 0.7383247 -0.6212406 id3,id6
4 1.5952808 0.5757814 -2.2146999 id4
5 0.3295078 -0.3053884 1.1249309 id5,id7
Есть ли dplyr
илиtidyr
способ сделать это?