基于存储在因子中的样本ID号来子集数据帧

时间:2015-01-27 17:47:08

标签: r subset

我的数据框由两列组成,一列包含我的样本ID,另一列包含我的结果,如下所示:

   Sample.ID Conc.
1         B1 0.020885051
2         B2 0.002398214
3         B3 0.001343366
4         B4 0.001501216
5         B5 0.002057419
6         B6 0.200243098
7         B7 0.003307670
8         B8 0.001403119
9          1 0.003150129
10         2 0.014822015
11         3 0.012500499
12       St2 0.199572365
13         4 0.012261783
14         5 0.004802208
15         6 0.003964603
16       St4 0.990239557
17         7 0.077453817
18         8 0.059765216
19       St2 0.204757306
20         9 0.061966809

我想知道是否有一种简单的方法来对数据进行分组,所以最后我为我的B分别设置了数据框:

Sample.ID Conc.
1         B1 0.020885051
2         B2 0.002398214
3         B3 0.001343366
4         B4 0.001501216
5         B5 0.002057419
6         B6 0.200243098
7         B7 0.003307670
8         B8 0.001403119

和我的号码

Sample.ID Conc.
1          1 0.003150129
2          2 0.014822015
3          3 0.012500499
4          4 0.012261783
5          5 0.004802208
6          6 0.003964603
7          7 0.077453817
8          8 0.059765216
9          9 0.061966809

最后我的St's

Sample.ID Conc.
1        St2 0.199572365
2        St4 0.990239557
3        St2 0.204757306

感谢阅读到最后&寻求帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用split()拆分data.frame,只要您的ID格式为letters-then-numbers,您就可以使用gsub删除尾随数字,如下所示:

stringsPart <-gsub('[0-9]*$','',myData$Sample.ID)
listOfSubDataFrames <- split(myData,stringsPart)

顺便说一下,正则表达式匹配出现在字符串末尾(*)的零个或多个([0-9])个数字($),并且gsub将其替换为空字符串('')。