Я имею дело с фреймом данных, который содержит переменную с именем «Marker», которая показывает два значения всех выборок, которые я собрал. Например, кадр данных выглядит следующим образом:
Sample.File Sample.Name Marker value
1 a a_1 xxx 16
2 a a_1 xxx 18
3 a a_1 yyy 16
4 a a_1 yyy 20
5 a a_1 zzz 9
6 a a_1 zzz 13
7 b b_1 xxx 10
8 b b_1 xxx 10
9 b b_1 yyy 6
10 b b_1 yyy 12
11 b b_1 zzz 14
12 b b_1 zzz 14
, что обеспечивается следующим кодом:
data <- data.frame(
Sample.File = as.factor(c("a", "a", "a", "a", "a", "a", "b", "b", "b", "b",
"b", "b")),
Sample.Name = as.factor(c("a_1", "a_1", "a_1", "a_1", "a_1", "a_1", "b_1",
"b_1", "b_1", "b_1", "b_1", "b_1")),
Marker = as.factor(c("xxx", "xxx", "yyy", "yyy", "zzz", "zzz", "xxx",
"xxx", "yyy", "yyy", "zzz", "zzz")),
value = c(16L, 18L, 16L, 20L, 9L, 13L, 10L, 10L, 6L, 12L, 14L, 14L)
)
Новый кадр данных, с которым я хотел бы работать, должно быть достигнуто путем транспонирования текущих данных, но с сохранением столбцов Sample.File и Sample.Name для всех собранных образцов. Кроме того, я хотел бы получить новые переменные, которые будут помечены следующим образом (например, xxx & xxx.1, yyy & yyy.1, zzz & zzz.1) для столбца, помеченного как «значение».
Таблица, которую я хотел бы получить, выглядит следующим образом:
Sample.File Sample.Name xxx xxx.1 yyy yyy.1 zzz zzz.1
1 a a_1 16 18 16 20 9 13
2 b b_1 10 10 6 12 14 14
Я хотел бы использовать код без записи названия меток, указанных в столбце «Маркер» (поскольку я мог получить до 100 различных этикеток). Я пытался использовать следующий код, но не смог достичь своей цели:
Я пытался использовать следующий код, но не смог достичь своей цели:
library(dplyr)
library(tidyr)
data %>%
gather(Sample.File, Sample.Name) %>%
spread(value)
Error: `var` must evaluate to a single number or a column name, not a double vector
Run `rlang::last_error()` to see where the error occurred.
In addition: Warning message:
attributes are not identical across measure variables;
they will be dropped
Я бы Буду очень признателен, если кто-нибудь сможет заняться этим вопросом!