根据另一列的事件更新一列

时间:2014-02-23 11:38:06

标签: r dataframe xtable

我有以下数据框

GenA<-rep(c("C/C","A/C"),5)
GenB<-rep(c("G/G","G/C"),5)
GenC<-rep(c("A/A","A/T","A/A","A/T","A/A"),2)
Treatment<-rep(c("A","B"),5)
e<-data.frame(GenA,GenB,GenC,Treatment)

有了这个,我想计算在给定治疗中某些基因存在的频率。所以我这样做:

e$MutA<-ifelse(!(e$GenA=="C/C"),"MutA","")
e$MutB<-ifelse(!(e$GenB=="G/G"),"MutB","")
e$MutC<-ifelse(!(e$GenC=="A/A"),"MutC","")


e$summary<-paste(e$MutA,e$MutB,e$MutC,sep=",")
round(prop.table(ftable(e$summary,e$Treatment),2),digits=2)

这给了我我想要的价值:

                  A   B

,,              0.6 0.0
MutA,MutB,      0.0 0.6
MutA,MutB,MutC  0.0 0.4
,,MutC          0.4 0.0

现在我希望通过xtable将其包含在Latex文档中,因此需要更改rownames以排除单词开头的任何逗号。理想情况下,输出看起来像:

                  A   B

no Mut          0.6 0.0
MutA,MutB,      0.0 0.6
MutA,MutB,MutC  0.0 0.4
MutC            0.4 0.0

我不想使用rownames命令,因为我的基础数据集正在发生变化,每周都会添加很多行。此外,我在这里发布了更多列。因此,我正在寻找实现这一结果的另一种方式。你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这个怎么样?

tab <- prop.table(ftable(e$summary,e$Treatment),2)
# remove leading commas using a regular expression
attr(tab,'row.vars')[[1]] <- sub('^,+','',attr(tab,'row.vars')[[1]])
# replace entries with no mutations with 'no Mut'
attr(tab,'row.vars')[[1]][attr(tab,'row.vars')[[1]]==''] <- 'no Mut'
相关问题