基于两列值的R中数据帧子集划分
我有一个以不同基因表达水平为列的数据框,列包括基因所属的时间点和组。我现在想得到某个基因和组对应的基因表达值:基于两列值的R中数据帧子集划分,r,dataframe,subset,R,Dataframe,Subset,我有一个以不同基因表达水平为列的数据框,列包括基因所属的时间点和组。我现在想得到某个基因和组对应的基因表达值: cpm[cpm$group=="dysglyc",colnames(cpm)==gene] 但是,我还想包括一个特定的时间点: cpm[cpm$group=="dysglyc" && cpm$timepoint=="A1",colnames(cpm)==gene] 这不管用。。。有人能帮忙吗?我强烈建议您使用数据.table库,以便与您的数据一起使用此类数据.f
cpm[cpm$group=="dysglyc",colnames(cpm)==gene]
但是,我还想包括一个特定的时间点:
cpm[cpm$group=="dysglyc" && cpm$timepoint=="A1",colnames(cpm)==gene]
这不管用。。。有人能帮忙吗?我强烈建议您使用
数据.table
库,以便与您的数据一起使用此类数据.frame在组和时间点上建立索引。你可以这样做:
cpm = data.table(cmp) # Convert to data.table
setkeyv(cpm, c("group", "timepoint")) # Set indexing variables.
然后,您可以使用data.table
中的i
表达式轻松地进行子集设置。例如:
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')
”中的vignette。如果您有一个大数据集,需要执行一系列groupby或split-apply-combine操作,那么该包将是一个额外的奖励。使用hust one即可。请尝试cpm[cpm$group==“dyglyc”&cpm$timepoint==“A1”,“gene”]
单独运行每个条件表达式非常有用,可以查看整个表达式的哪个部分未按预期工作。运行cpm$group==“dysgyc”
,cpm$timepoint==“A1”
,cpm$group==“dysgyc”&&cpm$timepoint==“A1”
,查看它们是否返回您期望的逻辑向量。当你想发帖提问时,请不要只说“它不起作用”——你应该描述发生了什么,以及你期望的是什么。一个可复制的例子也可以帮助我们帮助你。我简直不敢相信,我一定是打错了什么东西,它只能用一个&我已经找了很长时间了!非常感谢。