【发布时间】:2020-04-28 21:00:02
【问题描述】:
我有一个如下所示的数据框:
in.dat <- data.frame(ID = c("A1", "A1", "A1", "A1", "B1", "B1", "B1", "B1"),
DB = rep(c("bio", "bio", "func", "loc"), 2),
val = c("IPR1", "IPR2", "s43", "333-456",
"IPR7", "IPR8", "q87", "566-900"))
ID DB val
1 A1 bio IPR1
2 A1 bio IPR2
3 A1 func s43
4 A1 loc 333-456
5 B1 bio IPR7
6 B1 bio IPR8
7 B1 func q87
8 B1 loc 566-900
我想把“DB”变成列,取字符串值并用“;”折叠
out.dat <- data.frame(ID = c("A1", "B1"),
bio = c("IPR1;IPR2", "IPR7;IPR8"),
func = c("s47", "q87"),
loc = c("333-456", "566-900"))
> out
ID bio func loc
1 A1 IPR1;IPR2 s47 333-456
2 B1 IPR7;IPR8 q87 566-900
我已经使用dplyr 玩过pivot_wider 和group,但并没有完全得到我想要的,因为一个组可以有多个值,每个ID 我想折叠到一个单元格中(例如,“IPR1 ;IPR2")
任何解决方案将不胜感激!
【问题讨论】: