У меня есть набор данных в следующем (аккуратном) формате:
SAMPLE, MARKER, ALLELE, LENGTH, PEAK
BRIS01, B100, allele 1, NA, 126.95
BRIS01, B100, allele 2, 160, 159.72
BRIS01, B100, allele 3, 162, 162.01
BRIS02, B100, allele 1, 152, 151.4
BRIS02, B100, allele 2, NA, NA
BRIS02, B100, allele 3, NA, NA
В целом, каждый образец имеет запись для 14 маркеров, и каждый маркер имеет записи для 5 аллелей, даже если запись просто'NA'.Я не уверен, сколько образцов есть.
Я потратил весь день, пытаясь реструктурировать его в следующий формат, чтобы для каждого образца все значения аллелей были рядом друг с другом для каждого маркера, нобезрезультатно:
MARKER 1 MARKER 2 MARKER 3
SAMPLE 1, NA, 126.95, 160, 159.72, 162, 162.01, LENGTH, PEAK, LENGTH, PEAK
SAMPLE 2, 152, 151.4, NA, NA, NA, NA, LENGTH, PEAK, LENGTH, PEAK
Если формат выглядит немного неопрятно, надеюсь, это может помочь: в каждой строке должно быть 141 столбец;В первом столбце должно быть указано название образца, затем длина аллеля и размер пика для 5 аллелей каждого маркера.Например, Sample, длина маркера 1, пик 1 маркера 1, длина 1 маркера 2, пик 2 маркера, длина 1 маркера 2, пик 2 маркера и т. Д. Это немного нелогично, но представьте, что существуют заголовки столбцов длякаждый маркер, а затем вложенные столбцы для размера и пиков каждого аллеля.
Я пытался использовать dpylr, аккуратные данные, плавление, приведение, dcast, изменение формы, изменение формы2, транспонирование ... но я не очень хорошс R и не повезло.Использование длины и пика в качестве подколонок, вероятно, не очень хорошие / аккуратные данные на практике, но это то, что мой начальник попросил интерпретировать данные.Любая обратная связь приветствуется!
Спасибо!
РЕДАКТИРОВАТЬ: я выполнил следующий код в соответствии с предложением:
ultra_wide <-
wide %>%
group_by(SAMPLE, MARKER) %>%
gather(key = "VARS", value = "VALS", c(LENGTH, PEAK)) %>%
spread(MARKER, VALS) %>%
summarize(MARKER1 = paste(c(B100), collapse = ", "),
MARKER2 = paste(c(B132), collapse = ", "),
MARKER3 = paste(c(BL13), collapse = ", "),
MARKER4 = paste(c(BT06), collapse = ", "),
MARKER5 = paste(c(BT09), collapse = ", "),
MARKER6 = paste(c(BT30), collapse = ", "),
MARKER7 = paste(c(BTMS0044), collapse = ", "),
MARKER8 = paste(c(BTMS0067), collapse = ", "),
MARKER9 = paste(c(BTMS0106), collapse = ", "),
MARKER10 = paste(c(B116), collapse = ", "),
MARKER11 = paste(c(B118), collapse = ", "),
MARKER12 = paste(c(B119), collapse = ", "),
MARKER13 = paste(c(BT20), collapse = ", "),
MARKER14 = paste(c(BTMS0114), collapse = ", "))
однако команда ничего не сделала, как следующая ошибкапроизошло:
Ошибка: дубликаты идентификаторов для строк (76, 77, 78, 79, 80), (30671, 30672, 30673, 30674, 30675), (81, 82, 83, 84, 85),(30676, 30677, 30678, 30679, 30680)
, что продолжалось еще несколько строк после этого.