2013-02-24 26 views
1

我有一个处理来自英国实践的数据的数据框。 原始数据为http://datagov.ic.nhs.uk/T201207.exe。我已经将它提交到PCT级别的数据框架中,由PCT和最常见的处方(“项目”栏中的降序)排序。通过另一列中的因子提取列中的前50位

 pct sha chem.code items  nic act.cost 
32360 5ZW Q39 0212000Y0 12421 17811.40 16888.21 
28769 5ZW Q39 0209000A0 8741 7834.43 7554.72 
4439 5ZW Q39 0103050P0 7733 21566.51 20210.05 
... 
82763 5D7 Q30 0603020L0  1 1.08  1.13 
152673 5D7 Q30 1502010C0  1 0.92  0.85 
5149 5D7 Q30 0104020N0  1 0.70  0.68 
149501 5D7 Q30 1311060I0  1 0.50  0.49 

有151 pct的和每个有超过1000项。我想提取每个pct的前50项。我知道我可以写一个for循环,只是遍历pct的级别,但这不是R。我还没有想出如何使用applysapply来完成关卡上的子集。这似乎更好地获取整列而不是获取行的子集。

+0

链接是一个可执行文件,而不是您的数据。 – Arun 2013-02-24 14:04:46

+2

[检查出来](http://stackoverflow.com/questions/14800161/how-to-find-the-top-n-values-by-group-or-within-category-groupwise-in-an-r -dat):) – 2013-02-24 14:10:37

+0

@Arun可执行文件是一个'self-expanding zip',它包含2个csv文件,它们是数据。感谢NHS。 – Suz 2013-02-24 14:56:27

回答

1

不太清楚,如果我得到它,但我最好的猜测是这样的:

require(plyr) 
ddply(df, .(pct), function(x) x[1:50, ]) 

这会挑选每个pct第50项(假定肯定有50个项目)。

+0

这是一个很好的答案,它很有效。我投了票。我一直在努力学习R的方法并保持基本功能,但我可能不得不放弃。我一直以有用的方式看到plyr的使用。我已经投票决定关闭这个问题,因为它与之前的问题相同('如何按组找到最优N值')。然而,在这个问题上并没有建议plyr的方式。也许你可以在那里添加它。 (我很乐意投它..) – Suz 2013-02-24 21:14:49

+0

这个答案和你链接到的是不一样的。这只是挑选前50个元素,而不考虑关系。它们是相似的,但不完全相同。自从你这样做以后,我不介意投票结束这个问题。但仔细阅读另一篇文章,看看这是你需要的,因为从你的问题来看,这并不明显。 – Arun 2013-02-24 22:51:04

+0

在这种情况下,我不在乎领带。我已经订购了3个领域的数据。我使用一个作为分组数据的因素,第二个作为我感兴趣的排名,第三个作为定义边界(断开关系)。所以它很好解决。另一个问题包括这个案例作为一个子集,@ Ista的第一个建议回答了我的问题。该页面的答案*也*详细解决了关系问题,但是作为次要问题。我没有看到这些问题有足够的差异来解决这个问题,但也许你的观点是'ddply()'不能处理关系。 – Suz 2013-02-26 13:44:10

相关问题