2013-02-24 69 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

相關問題