【发布时间】:2015-07-16 08:42:47
【问题描述】:
我一直在使用 R 中的聚合函数,但并没有真正解决我的问题。
问题如下,我的数据看起来像这样(请注意,还有几列,但与示例无关):
Description Delta E.Mass Charge RT
TFGTFSVEEYVLPK 0.0111 1615.82 2 94.5554
VSGVGNNISFEEK 0.0073 1378.68 2 51.902
DGNGNTWLTAFVTK 0.0088 1522.75 2 96.1395
DGNGNTWLTAFVTK 0.9961 1523.74 2 98.289
DGNGNTWLTAFVTK 0.9979 1523.74 2 99.1948
DGNGNTWLTAFVTK 0.9958 1523.74 2 98.333
DGNGNTWLTAFVTK 0.9987 1523.74 2 99.2278
DGNGNTWLTAFVTK 0.0084 1522.75 2 95.4033
DVDDPMVSQGLR 15.99492@M6 delta:13.700001 1.013 1347.63 2 46.353
GFGLSPTVGLTAFKPF 0.0052 1637.89 2 109.398
GFGLSPTVGLTAFKPF 0.0092 1637.89 2 108.368
GFGLSPTVGLTAFKPF 0.0089 1637.89 2 108.339
ILDSNEPCGGQK 0.0086 1316.61 2 31.9053
LAPDPSLVIYAIFPSGGVVADK -0.006 2228.2 3 118.385
LAPDPSLVIYAIFPSGGVVADK -0.0034 2228.21 3 118.413
LAPDPSLVIYAIFPSGGVVADK -0.0082 2228.2 3 117.739
PSYQEEAVTK 0.005 1150.56 2 32.2676
PSYQEEAVTK 0.005 1150.56 2 32.2676
我想要实现的是:
- 聚合在
Description - 选择最小的
Delta。 - 将
RT值平均为RT_mean - 为任意数字 N 添加列
RT_mean - N、RT_mean + N。 - 在输出中保留/忽略所有其他列。
我查看了聚合函数,但似乎我无法使用该函数执行特定于列的巫术。
我尝试了by(结合rbind)和ddply,但没有真正的突破。我确信可以做我想做的事,只需正确获取这些函数的参数即可。但由于我的日程安排非常紧张,我无法真正进行常规的试错学习过程。
非常感谢任何帮助或指导,特别是一些 cmets 解释答案,以防我需要修改提供的答案以适应数据。
编辑:根据 cmets,这是一个简化的示例,输入如下:
ID Delta Emass Ch RT
A 0.0084 1522.75 2 95.4033
A 0.0088 1522.75 2 96.1395
A 0.9961 1523.74 2 98.2890
B 1.0130 1347.63 2 46.3530
C -0.0060 2228.20 3 118.3850
C -0.0034 2228.21 3 118.4130
C 0.0082 2228.20 3 117.7390
D 0.0050 1150.56 2 32.2676
D 0.0050 1150.56 2 32.2676
期望的输出是:
ID Delta Emass Ch RT_mean RT1 RT2
A 0.0084 1522.75 2 96.6106 93.6106 99.6106
B 1.0130 1347.63 2 46.3530 43.3530 49.3530
C -0.0060 2228.20 3 118.1790 115.1790 121.1790
D 0.0050 1150.56 2 32.2676 29.2676 35.2676
【问题讨论】:
-
请解释:
calculate E.Mass - Delta, alternatively pick the (Delta, E.Mass) pair with the smallest Delta.。第二部分没看懂此外,对于 E.Mass - Delta,您想要两种方法的差异吗? -
group_by和mutatefromdplyr包将是一个开始。 -
请提供您想要的输出。
-
@DavidArenburg 一个更简单的例子,现在提供了所需的输出
标签: r aggregate-functions data-analysis