根据另一列的级别对数​​据框中的列进行排序

时间:2013-12-12 10:26:42

标签: r

我是R的新手并坚持使用以下数据。要么我用错误的术语搜索,要么这个问题没有上升(可能是因为简单?)。

我有一个包含因子和数字列的数据框:

> head(PAMdata1)
salt cultivar  Ratiod13     StdErr
1   50     1 1.0760163 0.02915785
2  100     1 0.9814083 0.04914316
3   50     2 0.9617199 0.06571578
4  100     2 0.7878740 0.10270647
5   50     4 0.9551830 0.04134652
6  100     4 0.8429793 0.10993336

> str(PAMdata1)
'data.frame':   36 obs. of  4 variables:
$ salt    : Factor w/ 2 levels "50","100": 1 2 1 2 1 2 1 2 1 2 ...
$ cultivar: Factor w/ 18 levels "27","26","21",..: 7 7 15 15 13 13 11 11 9 9 ...
$ Ratiod13: num  1.076 0.981 0.962 0.788 0.955 ...
$ StdErr  : num  0.0292 0.0491 0.0657 0.1027 0.0413 ...

“品种”栏包含因子,其等级使用另一个数据框排序:

PAMdata1$cultivar <- factor(PAMdata1$cultivar, levels = unique(as.character(my_other_df$cultivar)))

levels(PAMdata1$cultivar)
[1] "27" "26" "21" "52" "14" "25" "1"  "23" "7"  "8"  "5"  "28" "4"  "22" "2" 
[16] "53" "51" "50"

我想要的是PAMdata1 $ Ratiod13按品种水平排序。如何将水平矢量转换为每个级别位于?

的行号矢量

我将不胜感激。

非常感谢

2 个答案:

答案 0 :(得分:1)

与办公室伙伴交谈并看到你的评论我看到我在sort()和order()之间的混淆

PAMdata1[order(PAMdata1$cultivar),]

甚至

PAMdata1[with(PAMdata1,order(cultivar)),]

可以胜任。

非常感谢你的帮助。

答案 1 :(得分:0)

data.table选项是setkey品种:

setkey(PAMdata1,cultivar)