使用2种不同的排序方法对R中的Dataframe进行排序

时间:2015-09-08 19:22:40

标签: r sorting

我有一个如下所示的数据框:

    well_idx_vector        mass volume neg_control
1               H11 0.009366979    500         0.0
5               H10 0.005421779    500         0.0
9                H9 0.005869947    500         0.0
13               H8 0.004795850    500         0.0
17               H7 0.003171749    500         5.2
21               H6 0.003376679    500         4.6
25               H5 0.002591224    500         0.0
29               H4 0.004296721    500         5.7
33               H3 0.009735851    500         0.0
37               H2 0.005806398    500         8.4
41              G11 0.026943706    500         0.0
45              G10 0.053557516    500         3.0
49               G9 0.053424353    500         0.0
53               G8 0.101048356    500         0.0
57               G7 0.134918211    500         3.0
61               G6 0.154740298    500         0.0
65               G5 0.150639698    500         0.0
69               G4 0.105248793    500         0.0
73               G3 0.056218890    500         0.0
77               G2 0.044184765    500         0.0
81              F11 0.004311336    500         0.0
85              F10 0.003248083    500         0.0
89               F9 0.003612080    500         0.0
93               F8 0.002984221    500         0.0
97               F7 0.002622425    500         0.0
101              F6 0.002755702    500         0.0
105              F5 0.002125027    500         0.0
109              F4 0.003665278    500         0.0
113              F3 0.006419565    500         0.0
117              F2 0.004025916    500         0.0
121             E11 0.008369456    500         0.0
125             E10 0.007690647    500         0.0
129              E9 0.009800190    500         0.0
133              E8 0.026999688    500         0.0
137              E7 0.076243655    500         0.0
141              E6 0.144946547    500         0.0
145              E5 0.162233828    500         6.5
149              E4 0.104610457    500         0.0
153              E3 0.070559076    500         0.0
157              E2 0.067716717    500         0.0
161             D11 0.009099992    500         0.0
165             D10 0.005349740    500         0.0
169              D9 0.006191890    500         0.0
173              D8 0.005861958    500         0.0
177              D7 0.004369067    500         0.0
181              D6 0.004488258    500         0.0
185              D5 0.003315325    500         0.0
189              D4 0.004248404    500         0.0
193              D3 0.004835732    500         0.0
197              D2 0.005240292    500         0.0
201             C11 0.022015707    500         0.0
205             C10 0.013906228    500         0.0
209              C9 0.010194517    500         0.0
213              C8 0.010884621    500         0.0
217              C7 0.012959556    500         4.1
221              C6 0.022814209    500         1.4
225              C5 0.066223146    500        17.5
229              C4 0.037144041    500         0.0
233              C3 0.018543935    500         5.4
237              C2 0.015455041    500         4.9
241             B11 0.004198596    500         0.0
245             B10 0.005485408    500         0.0
249              B9 0.006233599    500         0.0
253              B8 0.012478330    500         0.0
257              B7 0.009894567    500         0.0
261              B6 0.008895920    500         0.0
265              B5 0.013198592    500         0.0
269              B4 0.012333688    500         0.0
273              B3 0.007915466    500         0.0
277              B2 0.008411102    500         0.0
281             A11 0.005488688    500         0.0
285             A10 0.004107467    500         0.0
289              A9 0.006539720    500         0.0
293              A8 0.008039929    500         0.0
297              A7 0.006302248    500         0.0
301              A6 0.006857599    500         0.0
305              A5 0.007671245    500         0.0
309              A4 0.006155090    500         0.0
313              A3 0.005278983    500         0.0
317              A2 0.009681976    500         0.0

我需要通过well_idx_vector列按顺序对此数据帧进行排序,其中A首先出现,G出现最后,以及以A,C,E,G开头的well_idx元素在升序,以及以B,D开头的那些元素,F,H正在下降

(例如:A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,C2,C3。 ..等等。

所以我的问题是,同时以两种不同方式订购此数据帧的最佳方法是什么?先感谢您。我尝试使用order()函数但运气不佳。

1 个答案:

答案 0 :(得分:2)

ind <- data.frame(well_idx_vector=paste0(rep(LETTERS[1:8], each=11), c(1:11, 11:1)), stringsAsFactors=F)
merge(ind, df, by="well_idx_vector", sort=FALSE)

上面的假设是在操作之前具有一般范围是现实的。 ind只是预期订单的扩展。如果数据太大而无法确定该信息,则可以采取额外步骤将id向量拆分为字母和数字。从那里我们可以在必要时提取相关信息。

#    well_idx_vector        mass volume neg_control
# 1               A2 0.009681976    500         0.0
# 2               A3 0.005278983    500         0.0
# 3               A4 0.006155090    500         0.0
# 4               A5 0.007671245    500         0.0
# 5               A6 0.006857599    500         0.0
# 6               A7 0.006302248    500         0.0
# 7               A8 0.008039929    500         0.0
# 8               A9 0.006539720    500         0.0
# 9              A10 0.004107467    500         0.0
# 10             A11 0.005488688    500         0.0
# 11             B11 0.004198596    500         0.0
# 12             B10 0.005485408    500         0.0
# 13              B9 0.006233599    500         0.0
# 14              B8 0.012478330    500         0.0
# 15              B7 0.009894567    500         0.0