亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按組選擇前N個值

按組選擇前N個值

Cats萌萌 2019-11-14 15:21:46
這是對r-help郵件列表上詢問的問題的答復。這里有很多示例,這些示例如何通過分組使用來查找最高值sql,因此我想可以很容易地使用R sqldf包將這些知識轉換為知識。例如:mtcars按分組時cyl,這是的每個不同值的前三條記錄cyl。請注意,在這種情況下,不包括領帶,但是最好顯示一些其他處理領帶的方法。                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb ranksToyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1   2.0Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2   1.0Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1   2.0Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4   3.0Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4   1.0Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4   1.5Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4   1.5Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4   3.0如何找到每組的前N個記錄(最大或最?。??
查看完整描述

3 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

隨便按什么排序(例如,mpg,問題尚不清楚)


mt <- mtcars[order(mtcars$mpg), ]

然后使用by函數獲取每組中的前n行


d <- by(mt, mt["cyl"], head, n=4)

如果希望結果為data.frame:


Reduce(rbind, d)

編輯: 處理關系比較困難,但是如果需要所有關系:


by(mt, mt["cyl"], function(x) x[rank(x$mpg) %in% sort(unique(rank(x$mpg)))[1:4], ])

另一種方法是根據其他一些信息(例如,


mt <- mtcars[order(mtcars$mpg, mtcars$hp), ]

by(mt, mt["cyl"], head, n=4)


查看完整回答
反對 回復 2019-11-14
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

dplyr 絕招


mtcars %>% 

arrange(desc(mpg)) %>% 

group_by(cyl) %>% slice(1:2)



 mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb

  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>

1  33.9     4  71.1    65  4.22 1.835 19.90     1     1     4     1

2  32.4     4  78.7    66  4.08 2.200 19.47     1     1     4     1

3  21.4     6 258.0   110  3.08 3.215 19.44     1     0     3     1

4  21.0     6 160.0   110  3.90 2.620 16.46     0     1     4     4

5  19.2     8 400.0   175  3.08 3.845 17.05     0     0     3     2

6  18.7     8 360.0   175  3.15 3.440 17.02     0     0     3     2


查看完整回答
反對 回復 2019-11-14
  • 3 回答
  • 0 關注
  • 588 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號