bio*_*ard 6 sorting r function
给定一个数据框架 dna
> dna
chrom start
chr2 39482
chr1 203918
chr1 198282
chrX 7839028
chr17 3874
Run Code Online (Sandbox Code Playgroud)
以下代码dna按$chrom字母升序和$start数字升序重新排序:
> dna <- dna[with(dna, order(chrom, start)), ]
> dna
chrom start
chr1 198282
chr1 203918
chr17 3874
chr2 39482
chrX 7839028
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够$chrom按如下方式进行排序(为了我的例子,这里简化了):
chrom_order <- c("chr1","chr2", "chr17", "chrX")
Run Code Online (Sandbox Code Playgroud)
我不允许重命名的东西,例如chr1对chr01.
RUs*_*ser 10
您需要指定levelsin factor,然后使用order索引:
zz <- "chrom start
chr2 39482
chr1 203918
chr1 198282
chrX 7839028
chr17 3874"
Data <- read.table(text=zz, header = TRUE)
library(Hmisc)
library(gdata)
Data$chrom <- reorder.factor(Data$chrom , levels = c("chr1","chr2", "chr17", "chrX"))
Data[order(Data$chrom), ]
chrom start
2 chr1 203918
3 chr1 198282
1 chr2 39482
5 chr17 3874
4 chrX 7839028
Run Code Online (Sandbox Code Playgroud)
或者你可以使用这个:
> Data$chrom <- factor(chrom , levels = c("chr1","chr2", "chr17", "chrX"))
> Data[order(Data$chrom), ]
chrom start
2 chr1 203918
3 chr1 198282
1 chr2 39482
5 chr17 3874
4 chrX 7839028
Run Code Online (Sandbox Code Playgroud)
或使用此:
> Data$chrom <- reorder(Data$chrom, new.order=c("chr1","chr2", "chr17", "chrX"))
> Data[order(Data$chrom), ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9790 次 |
| 最近记录: |