This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Spliting a dataframe based in a chromosome

I would like to split my dataframe depending of a column tagged as Chr. I would like to write these split objetcs in a .txt file automatically too.

My input:

Name   Chr  Position LTR
Prob1   1     55     0.2
Prob2   2     25     0.9
Prob3   3     25     0.7
Prob4   1     45     0.5

My First output:

Name   Chr  Position  LTR 
Prob1   1      55     0.2
Prob4   1      45     0.5

My second output:

 Name   Chr  Position  LTR 
 Prob2   2     25      0.9

My last output:

Name Chr Position LTR Prob3 3 25 0.7

I am trying to do something like:

outfile <- paste0("newsplit",i,".txt") SPLIT PROCEDURES write.table(all, outfile, sep=";")

Where i is the correspondent chromosome (value in a Chr column).

Cheers!

split chr r

1 answer

There are many ways to do this. Here is one:

> a = data.frame(Chr=c(1,1,2,3),Position=c(1234,5678,3456,7890),LTR=c(2,3,4,5))
> a
  Chr Position LTR
1   1     1234   2
2   1     5678   3
3   2     3456   4
4   3     7890   5

> for(i in unique(a$Chr)){write.table(a[a$Chr==i,],paste("newsplit",i,".txt",sep=""),sep="\t",quote=F,row.names=F)}

Log in to answer this question.