我一直在玩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
RT_mean - N
,RT_mean + N
。我已经查看了聚合函数,但似乎我不能使用该函数来执行特定于列的voodoo。
我尝试by
(与rbind
}和ddply
结合使用但没有真正的突破。我确信它可以做我想做的事情,只需要正确地获得这些功能的参数。但由于我的时间表非常紧张,我无法正常进行常规的试错过程。
我非常感谢任何帮助或指导,特别是在解释答案的一些评论中,以防我需要修改提供的答案以适应数据。
编辑:根据这里的评论,这是一个简单的例子,输入如下:
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
答案 0 :(得分:1)
使用dplyr
包尝试这种操作非常容易。
无法理解最小的三角洲部分。否则此代码将执行其他所有操作。一个更容易重现的例子,最后有预期答案,这将有所帮助。
library(dplyr)
data %>% group_by(Description) %>% summarize(dif = E.Mass - Delta,
RT_mean = mean(RT),RT_x = RT_mean - 2, RT_y RT_mean -3)