У меня есть кадр данных, который выглядит следующим образом:
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
Я хочу превратить «БД» в столбцы, взять строковые значения и свернуть на «;»
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
Я играл с pivot_wider
и group
, используя dplyr
, но не совсем получая то, что хочу, так как у группы может быть несколько значений для каждого идентификатора, который я хочу свернуть в одну ячейку (например, «IPR1; IPR2») )
Любое решение будет оценено!