我的数据框由两列组成,一列包含我的样本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
感谢阅读到最后&寻求帮助。
答案 0 :(得分:2)
您可以使用split()
拆分data.frame,只要您的ID格式为letters-then-numbers,您就可以使用gsub
删除尾随数字,如下所示:
stringsPart <-gsub('[0-9]*$','',myData$Sample.ID)
listOfSubDataFrames <- split(myData,stringsPart)
顺便说一下,正则表达式匹配出现在字符串末尾(*
)的零个或多个([0-9]
)个数字($
),并且gsub将其替换为空字符串(''
)。