Другой вариант для order
перед dcast
состоит в том, чтобы изменить его на factor
столбец с levels
, указанным после удаления :
в конце строки в 'Chr_No'
library(data.table)
setDT(a)[, Chr_No := factor(sub(':$', '', Chr_No), levels = paste0("chr", 1:11))]
Затем выполните dcast
dcast( a, sample ~ Chr_No, value.var = "frequency", fill = 0 )
# sample chr1 chr2 chr3 chr4 chr5 chr6 chr7 chr8 chr9 chr10 chr11
#1: sample-1 0 0 0 1 0 0 0 0 1 0 0
данные
a <- structure(list(sample = c("sample-1", "sample-1", "sample-1",
"sample-1", "sample-1", "sample-1", "sample-1", "sample-1", "sample-1",
"sample-1", "sample-1"), Chr_No = c("chr1:", "chr2:", "chr3:",
"chr4:", "chr5:", "chr6:", "chr7:", "chr8:", "chr9:", "chr10",
"chr11"), frequency = c(0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L,
0L)), class = "data.frame", row.names = c(NA, -11L))