Skip to content
Prev 334302 / 398506 Next

Covert many lines in a specific line

Hi,

May be this helps:

dat1 <- read.table(text="Sample? Genotype? Region
??? sample1??? A????? Region1
??? sample1??? B????? Region1
??? sample1??? A????? Region1
??? sample2??? A????? Region1
??? sample2??? A????? Region1
??? sample3??? A????? Region1
??? sample4??? B????? Region1",sep="",header=TRUE,stringsAsFactors=FALSE)
library(plyr)
?unique(ddply(dat1,.(Sample),mutate, Genotype=if(length(unique(Genotype))>1) {"E"} else Genotype))


dat2 <- read.table(text="Sample? Genotype? Region
??? sample1??? A????? Region1
??? sample1??? B????? Region1
??? sample1??? A????? Region1
??? sample2??? A????? Region1
??? sample2??? A????? Region1
??? sample3??? A????? Region1
??? sample4??? B????? Region1
??? sample1??? A????? Region2
??? sample1??? B????? Region2
??? sample1??? A????? Region2
??? sample2??? A????? Region2
??? sample2??? A????? Region2",sep="",header=TRUE,stringsAsFactors=FALSE)

?unique(ddply(dat2,.(Region,Sample),mutate, Genotype=if(length(unique(Genotype))>1) {"E"} else Genotype))

#or
aggregate(Genotype~.,data=dat2,function(x) x <- if(length(unique(x))>1) "E" else unique(x))



A.K.


I would like to transform this data: 

? ? Sample ?Genotype ?Region 
? ? sample1 ? ?A ? ? ?Region1 
? ? sample1 ? ?B ? ? ?Region1 
? ? sample1 ? ?A ? ? ?Region1 
? ? sample2 ? ?A ? ? ?Region1 
? ? sample2 ? ?A ? ? ?Region1 
? ? sample3 ? ?A ? ? ?Region1 
? ? sample4 ? ?B ? ? ?Region1 

In that format, tagging with "E" samples with more than one genotype and unifying samples with the same genotype 2 times: 

? ? Sample ?Genotype ?Region ? 
? ? sample1 ? ?E ? ? ?Region1 
? ? sample2 ? ?A ? ? ?Region1 
? ? sample3 ? ?A ? ? ?Region1 
? ? sample4 ? ?B ? ? ?Region1 

I have one list with many regions (Region1 - Regionx). It is possible to do in R software? Thanks a lot.