【发布时间】:2016-09-19 18:16:38
【问题描述】:
我假设我是 R 新手,实际上我正在尝试了解基础知识。 目前我正在处理一个大型数据框(称为“ppl”),我必须对其进行编辑才能过滤一些行。每一行都包含在一个组中,并由一个强度(进入)值和一个样本值来表征。
mz rt into sample tracker sn grp
100.0153 126 2.762664 3 11908 7.522655 0
100.0171 127 2.972048 2 5308 7.718521 0
100.0788 272 30.217969 2 5309 19.024807 1
100.0796 272 17.277916 3 11910 7.297716 1
101.0042 128 37.557324 3 11916 27.991320 2
101.0043 128 39.676014 2 5316 28.234918 2
嗯,第一个问题是:“如何从每组中选择强度最高的样本?” 我尝试了一个 for 循环:
for (i in ppl$grp) {
temp<-ppl[ppl$grp == i,]
sel<-rbind(sel,temp[max(temp$into),])
}
事实上它适用于 ppl$grp == 0,但接下来的循环返回 NAs 行。 然后过滤的数据框(称为“sel”)也应该存储删除行的样本值。应该是这样的:
mz rt into sample tracker sn grp
100.0171 127 2.972048 c(2,3) 5308 7.718521 0
100.0788 272 30.217969 c(2,3) 5309 19.024807 1
101.0043 128 39.676014 c(2,3) 5316 28.234918 2
为了得到这个,我会使用这种方法:
lev<-factor(ppl$grp)
samp<-ppl$sample
samp2<-split(samp,lev)
sel$sample<-samp2
有什么提示吗?因为我还没有解决上一个问题,所以我无法测试它。
非常感谢。
【问题讨论】: