在R中拆分后重新排序数据

时间:2013-12-14 04:27:08

标签: r split

我使用split函数将数据分组,结果如下:

$H1050
     row.names    Avg  Tree
1071      1904 2.8530 H1050
1072      1905 2.4030 H1050
1073      1906 1.6030 H1050
1074      1907 1.7660 H1050
1075      1908 2.5150 H1050

$H1040
     row.names    Avg  Tree
1737       1664 4.3200 H1040
1738       1665 4.0900 H1040
1739       1666 5.3100 H1040
1740       1667 4.8000 H1040
1741       1668 3.7000 H1040
1742       1669 4.0400 H1040
1743       1670 4.2800 H1040

总共有大约36个小组。然后我循环遍历这些数据以绘制每个单独的数据组。我希望能够通过row.names列中的元素数量重新排序拆分数据。例如,计算row.names列中元素的数量,然后具有最大数字的组应位于顶部并相应地降序。

这里最好的方法是什么?

非常感谢您的时间和精力!

2 个答案:

答案 0 :(得分:1)

这样的事情(假设一个名为l的列表):

num.row.names = lapply(l, function(x) length(unique(x$row.names)))
num.row.names = do.call(c, num.row.names)
l = l[order(num.row.names, decreasing=T)]

如果row.names是拆分数据帧中行的名称而不是数据框中的变量(我不清楚它来自OP),那么你将用第一行替换:

num.row.names = lapply(l, function(x) length(unique(row.names(x))))

答案 1 :(得分:1)

假设splat是您的拆分数据集:

  splat[order(sapply(splat, function(x) length(x[["row.names"]])))]