I would like to transform a long data set with repeated observations:
obs code
1 A
2 B
4 G
2 D
1 H
3 K
Into a "shorter" data set with a comma separated, summary column:
obs code
1 A,H
2 B,D
3 K
4 G
I tried something like:
df <- data.frame(obs=c("1","2","4","2","1","3"), code=c("A","B","G","D","H","K"),stringsAsFactors = F)
df %>% group_by(obs) %>%
mutate(id=1:n()) %>%
spread(id,code) %>%
replace_na(list(`1` = "", `2` = "")) %>%
unite(new,2:3, remove=FALSE,sep=",")
However, this gives me additional "," for obs 3 and 4. Is there a nicer was to solve my problem?