2014-03-04 2 views
0


두 가지 질문이 있습니까?
R의 합계, 반올림 및 대체 값

> data<-read.table("UC.txt",header=TRUE, sep="\t") 
> data$tot<-data$P1+data$P2+data$P3+data$P4 
> head(data, 5) 
     geno P1 P2 P3 P4 tot 
    1 G1 0.015 0.007 0.026 0.951 0.999 
    2 G2 0.008 0.006 0.015 0.970 0.999 
    3 G3 0.009 0.006 0.017 0.968 1.000 
    4 G4 0.011 0.007 0.017 0.965 1.000 
    5 G5 0.013 0.005 0.021 0.961 1.000 

질문 # 1 : 때때로, 컬럼의 수는 마지막 열 2 열 합계하는 방법, 다르므로. 데이터 [2]과 같이 : 데이터 [N]

library("plyr") 
> VD<-function(P4, tot){ 
    if(tot > 1) {return(P4-0.01)} 
    if(tot < 1) {return(P4+0.01)} 
    if(tot == 1) {return(P4)} 
} 
> minu<-ddply(data, 'geno', summarize, Result=VD(P4, tot)) 
> v <- data$geno==minu$geno 
> data[v, "P4"] <- minu[v, "Result"] 
> data <- subset(data, select = -tot) 
> data$tot<-data$P1+data$P2+data$P3+data$P4 
> head(data, 5) 
    geno P1 P2 P3 P4 tot 
1 G1 0.02 0.01 0.03 0.94 1 
2 G2 0.01 0.01 0.02 0.96 1 
3 G3 0.01 0.01 0.02 0.96 1 
4 G4 0.01 0.01 0.02 0.96 1 
5 G5 0.01 0.01 0.02 0.96 1 

질문 2 : 여기서, I는 P1 내지 P4를 조정함으로써 1 반올림 'TOT'할 필요가있다.
조건 :
1) P1 ~ P4 중 최대 값을 조정해야합니다.
2) 조정 값은 0.01, 0.001, 0.0001과 다를 수 있습니다. (1-tot을 기반으로 함)
이 작업을 수행하는 방법은 무엇입니까? question1를 들어, 첫 번째 제외한 모든 열을 합계를

답변

0

사전에
감사 :

dat$tot <- rowSums(dat[,-1])