1

我有一个来自英国实践的处方数据数据框。原始数据位于http://datagov.ic.nhs.uk/T201207.exe。我已经把它整理成一个 PCT 级别的数据框架,按 PCT 和最常见的处方排序(“项目”列中的降序)。

      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 个,每个都有 1000 多个项目。我想为每个 pct 提取前 50 项。我知道我可以编写一个for循环并遍历 pct 的级别,但那不是R. 我还没有弄清楚如何在关卡上使用apply或执行子集。sapply这似乎比获取行的子集更好地获取整个列。

4

1 回答 1

1

不太确定我是否明白,但我最好的猜测是:

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

这将为每个选择前 50 个项目pct(假设肯定有 50 个项目)。

于 2013-02-24T14:06:57.520 回答