我有一个数据框,其中不同的基因表达水平为列,而列包括哪个时间点&该基因属于哪一组。我现在想获得对应于某个基因和组的基因表达值:
cpm[cpm$group=="dysglyc",colnames(cpm)==gene]
但是,我还想包括一个特定的时间点:
cpm[cpm$group=="dysglyc" && cpm$timepoint=="A1",colnames(cpm)==gene]
这不起作用......有人可以帮忙吗?
答案 0 :(得分:1)
我强烈建议您使用data.table
库来使用此类,并在group
和timepoint
上编制索引的data.frame。你可以这样做:
cpm = data.table(cmp) # Convert to data.table
setkeyv(cpm, c("group", "timepoint")) # Set indexing variables.
然后,您可以使用i
中的data.table
表达式轻松进行子集化。 E.g:
cpm["dysglyc"] # Pull everything dysglyc
cpm[J("dysglyc", "A1")] # Pull everything group=dysglyc and timepoint=A1
cpm[J("dysglyc", "A1"), gene] # Use column gene within this subset etc.
您可以data.table
开始使用vignette('data.table')
的小插图。如果你有一个庞大的数据集并且需要做一堆groupby或split-apply-combine操作,那么这个包将是一个额外的奖励。