可能重复: 如何按列对数据框进行排序?
我有一个不同顺序的数据框(就列而言)。
ID_REF VALUE ABS_CALL DETECTION.P.VALUE
1 10071_s_at 3473.60000 P/present 0.000219000
2 1053_at 643.20000 P/present 0.000673000
3 117_at 564.00000 M/Marginal 0.000322000
4 1255_g_at 9.40000 A/absent 0.602006000
5 1294_at 845.60000 P/present 0.000468000
6 1320_at 94.30000 A/absent 0.204022000
现在下面的列顺序已更改
VALUE ID_REF ABS_CALL DETECTION P-VALUE
1 3473.6 10071_s_at P/present 0.000219
2 643.2 1053_at P/present 0.000673
3 564 117_at M/marginal 0.000322
4 9.4 1255_g_at A/absent 0.602006
5 845.6 1294_at P/present 0.000468
6 94.3 1320_at A/absent 0.204022
又变了
DETECTION P-VALUE VALUE ID_REF ABS_CALL
1 0.000219 3473.6 10071_s_at P
2 0.000673 643.2 1053_at P
3 0.000322 564 117_at M
4 0.602006 9.4 1255_g_at A
5 0.000468 845.6 1294_at P
6 0.204022 94.3 1320_at A
在这里,我在不同的列顺序中有相同的数据框。我不知道数据框的顺序,所以我想把数据放在下面的格式:
ID_REF VALUE ABS_CALL DETECTION.P.VALUE
1 10071_s_at 3473.60000 P/present 0.000219000
2 1053_at 643.20000 P/present 0.000673000
3 117_at 564.00000 M/Marginal 0.000322000
4 1255_g_at 9.40000 A/absent 0.602006000
5 1294_at 845.60000 P/present 0.000468000
6 1320_at 94.30000 A/absent 0.204022000
在这里,我需要检查_at
任何列中是否有子字符串,然后将其作为第一列。如果任何列的值大于 1,则将该列作为数据框的第二列。如果任何一列具有P
、或, A
,则将其作为第三列,最后任何值小于 1 的列将是最后一列。谁能告诉我如何在 R 中有效地做到这一点?M
present
absent
marginal
注意:列名不是永久性的,可以是任何名称(不同的名称)。