我需要从 R 中的以下数据框中为每个 group[yearmonth] 值选择前两个值。我已经按计数和 yearmonth 对数据进行了排序。如何在以下数据中实现这一点?
yearmonth name count
1 201310 Dovas 5
2 201310 Indulgd 2
3 201310 Justina 1
4 201310 Jolita 1
5 201311 Shahrukh Sheikh 1
6 201311 Dovas 29
7 201311 Justina 13
8 201311 Lina 8
9 201312 sUPERED 7
10 201312 John Hansen 7
11 201312 Lina D. 6
12 201312 joanna1st 5
最佳答案
或使用 data.table
( mydf
来自@jazzurro 的帖子)。一些选项是
library(data.table)
setDT(mydf)[order(yearmonth,-count), .SD[1:2], by=yearmonth]
或者
setDT(mydf)[mydf[order(yearmonth, -count), .I[1:2], by=yearmonth]$V1,]
或者
setorder(setkey(setDT(mydf), yearmonth), yearmonth, -count)[
,.SD[1:2], by=yearmonth]
# yearmonth name count
#1: 201310 Dovas 5
#2: 201310 Indulgd 2
#3: 201311 Dovas 29
#4: 201311 Justina 13
#5: 201312 sUPERED 7
#6: 201312 John Hansen 7
关于r - 使用 R 选择列中组内的前 N 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26644994/