如何根据2列选择行?

Jam*_*mes 1 r

dx <- data.frame(CMPD = c("cmpd1","cmpd1","cmpd1","cmpd1","cmpd2","cmpd2",
                          "cmpd2","cmpd2","cmpd3","cmpd3","cmpd3","cmpd3"),
                 MRM = c("309.0/121.1","309.0/121.1","309.0/90.1",
                         "309.0/90.1","305.2/140.3","305.2/140.3","300.5/107.3",
                         "300.5/107.3","404.8/126.0","404.8/126.0","401.5/91.0",
                         "401.5/91.0"),
                 RESP = c(123.4,234.5,345.6,456.7,567.8,678.9,789.0,12.4,
                          23.5,34.6,45.7,56.8))
Run Code Online (Sandbox Code Playgroud)

-

>dx

CMPD         MRM  RESP

1  cmpd1 309.0/121.1 123.4
2  cmpd1 309.0/121.1 234.5
3  cmpd1  309.0/90.1 345.6
4  cmpd1  309.0/90.1 456.7
5  cmpd2 305.2/140.3 567.8
6  cmpd2 305.2/140.3 678.9
7  cmpd2 300.5/107.3 789.0
8  cmpd2 300.5/107.3  12.4
9  cmpd3 404.8/126.0  23.5
10 cmpd3 404.8/126.0  34.6
11 cmpd3  401.5/91.0  45.7
12 cmpd3  401.5/91.0  56.8
Run Code Online (Sandbox Code Playgroud)

我想是能够基于所述的组合的独特性与该数据进行工作CMPD并且MRM(例如行1,2,则行3,4等)

And*_*rie 5

让我把你介绍给我的朋友,包裹plyr.

该软件包可以轻松使用分割,应用和组合数据的通用策略.最有用的功能之一是ddply将数据帧作为输入,并将数据帧减少为输出.您可以指定要拆分的唯一组合,以及要应用的功能,并ddply完成剩下的工作.

一个值得了解的好地方plyrHadley的网站他在"统计软件期刊"上的文章.StackOverflow上有关于plyr的数百个答案.只需按照 -tag或 -tag进行操作即可.

这里有些例子:

library(plyr)
Run Code Online (Sandbox Code Playgroud)

提取均值:

> ddply(dx, .(CMPD, MRM), numcolwise(mean))
   CMPD         MRM   RESP
1 cmpd1 309.0/121.1 178.95
2 cmpd1  309.0/90.1 401.15
3 cmpd2 300.5/107.3 400.70
4 cmpd2 305.2/140.3 623.35
5 cmpd3  401.5/91.0  51.25
6 cmpd3 404.8/126.0  29.05
Run Code Online (Sandbox Code Playgroud)

或者总和:

> ddply(dx, .(CMPD, MRM), numcolwise(sum))
   CMPD         MRM   RESP
1 cmpd1 309.0/121.1  357.9
2 cmpd1  309.0/90.1  802.3
3 cmpd2 300.5/107.3  801.4
4 cmpd2 305.2/140.3 1246.7
5 cmpd3  401.5/91.0  102.5
6 cmpd3 404.8/126.0   58.1
Run Code Online (Sandbox Code Playgroud)

  • [我认为这就是你的意思](http://www.redmolotov.com/images/designs/sayhello_design.jpg) (5认同)