У меня есть столбец «sample_values» с различным количеством дважды сцепленных данных, разделенных символами «,» и «:».Мне нужно сделать значения, разделенные "," в новые переменные (столбцы) и значения, разделенные ":" наблюдения этих новых переменных.Небольшое подмножество проблемных data.frame показано здесь:
```{r}
> CDR3 <- c("CASSKGTGGPYEQYF", "CASSSDTDPSYGYTF", "CASSFGTGKNTEAFF", "CASSPRPRYYEQYF")
> sample_values <- c("sample_a:36,sample_b:24,sample_c:56", "sample_a:47", "sample_a:73,sample_b:12", "sample_c:76,sample_d:89")
> df <- data.frame(CDR3, sample_values)
> df
CDR3 sample_values
1 CASSKGTGGPYEQYF sample_a:36,sample_b:24,sample_c:56
2 CASSSDTDPSYGYTF sample_a:47
3 CASSFGTGKNTEAFF sample_a:73,sample_b:12
4 CASSPRPRYYEQYF sample_c:76,sample_d:8
```
Я хотел бы закончить со следующим результатом:
```{r}
CDR3 sample_a sample_b sample_c sample_d
1 CASSKGTGGPYEQYF 36 24 56 0
2 CASSSDTDPSYGYTF 47 0 0 0
3 CASSFGTGKNTEAFF 73 12 0 0
4 CASSPRPRYYEQYF 0 0 76 89
```
Я отмечу, что отсутствиенаблюдение следует интерпретировать как ноль.
Я пытался сделать это, используя различные комбинации separate()
и spread()
из пакета tidyr
, а также cSplit()
из пакета splitstackshape
.Не удалось выполнить параметры tidyr
из-за разного количества наблюдений, которые нужно разделить в столбце, а параметр splitstackshape
не удалось из-за недостатка памяти (размер файла данных без ограничений составляет 485 МБ).