GoogleSearch
이 블로그 검색
[R] How to average duplicated id
라벨:
Informatics
이메일로 전송BlogThis!X에 공유Facebook에서 공유
> dat = read.table(text="
gene_id symbol array1 array2
1 763938 A 10 10
2 763979 B 20 20
3 1273243 C 100 100
4 764169 C 200 200
5 1273433 B 30 30
", sep="",header=TRUE,stringsAsFactors=FALSE)
> dat
gene_id symbol array1 array2
1 763938 A 10 10
2 763979 B 20 20
3 1273243 C 100 100
4 764169 C 200 200
5 1273433 B 30 30
> t
gene_id symbol array1 array2
1 763938 A 10 10
2 763979 B 20 20
3 1273243 C 100 100
4 764169 C 200 200
5 1273433 B 30 30
t = read.table( file="test2.txt", header=T)
##
## do not keep gene id
##
with(t,aggregate(t[,3:4],list(symbol),FUN=mean))
aggregate(t[,3:4], list(t$symbol), mean)
> aggregate(t[,3:4], list(t$symbol), mean)
Group.1 array1 array2
1 A 10 10
2 B 25 25
3 C 150 150
> do.call(rbind,lapply(lapply(split(t,t$symbol),`[`,3:4),colMeans))
array1 array2
A 10 10
B 25 25
C 150 150
##
## keep dup. id
##
t = read.table( file="test2.txt", header=T)
for( i in 3:4) {
av = ave(t[,i], t$symbol)
t[,i] = av
}
> t
gene_id symbol array1 array2
1 763938 A 10 10
2 763979 B 25 25
3 1273243 C 150 150
4 764169 C 150 150
5 1273433 B 25 25
dat1<-read.table(text="
gene_id sample_1 sample_2 FL_EARLY FL_LATE
763938 Eucgr.A00054 fl_S1E fl_S1L 13.170800 22.2605
763979 Eucgr.A00101 fl_S1E fl_S1L 0.367960 14.1202
1273243 Eucgr.A00101 fl_S2 fl_S1L 0.356625 14.1202
764169 Eucgr.A00350 fl_S1E fl_S1L 7.381070 43.9275
1273433 Eucgr.A00350 fl_S2 fl_S1L 10.674500 43.9275
1273669 Eucgr.A00650 fl_S2 fl_S1L 33.669100 50.0169
764480 Eucgr.A00744 fl_S1E fl_S1L 132.429000 747.2770
1273744 Eucgr.A00744 fl_S2 fl_S1L 142.659000 747.2770
764595 Eucgr.A00890 fl_S1E fl_S1L 2.937760 14.9647
764683 Eucgr.A00990 fl_S1E fl_S1L 8.681250 48.5492
1273947 Eucgr.A00990 fl_S2 fl_S1L 10.553300 48.5492
764710 Eucgr.A01020 fl_S1E fl_S1L 0.000000 57.9273
1273974 Eucgr.A01020 fl_S2 fl_S1L 0.000000 57.9273
764756 Eucgr.A01073 fl_S1E fl_S1L 8.504710 101.1870
1274020 Eucgr.A01073 fl_S2 fl_S1L 5.400010 101.1870
764773 Eucgr.A01091 fl_S1E fl_S1L 3.448910 15.7756
764826 Eucgr.A01152 fl_S1E fl_S1L 69.565700 198.2320
764831 Eucgr.A01158 fl_S1E fl_S1L 7.265640 30.9565
764845 Eucgr.A01172 fl_S1E fl_S1L 3.248020 16.9127
764927 Eucgr.A01269 fl_S1E fl_S1L 18.710200 76.6918
",sep="",header=TRUE,stringsAsFactors=FALSE)
dat$FL_EARLY<-unlist(lapply(lapply(split(dat,dat$gene_id),`[`,4),function(x) rep(colMeans(x),each=nrow(x))),use.names=F)
ref: http://r.789695.n4.nabble.com/average-duplicated-rows-td4646006.html
이메일로 전송BlogThis!X에 공유Facebook에서 공유
라벨:
Informatics
Scientist. Husband. Daddy. --- TOLLE. LEGE
외부자료의 인용에 있어 대한민국 저작권법(28조)과 U.S. Copyright Act (17 USC. §107)에 정의된 "저작권물의 공정한 이용원칙 | the U.S. fair use doctrine" 을 따릅니다. 저작권(© 최광민)이 명시된 모든 글과 번역문들에 대해 (1) 복제-배포, (2) 임의수정 및 자의적 본문 발췌, (3) 무단배포를 위한 화면캡처를 금하며, (4) 인용 시 URL 주소 만을 사용할 수 있습니다. [후원 | 운영] [대문으로] [방명록] [옛 방명록] [티스토리 (백업)] [신시내티]
-