【发布时间】:2018-11-21 06:47:57
【问题描述】:
我有一个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 的方法可以做到这一点?
【问题讨论】:
标签: r dataframe dplyr unique tidyr