如何从保留r中重复项的数据框中选择前n个值
假设我的示例数据如下所示如何从保留r中重复项的数据框中选择前n个值,r,rank,R,Rank,假设我的示例数据如下所示 id freq 1 4 2 3 3 2 4 2 5 1 freq列告诉每个id的频率。问题是:我想要前3个频率。输出应为 id freq 1 4 2 3 3 2 4 2 我使用了以下代码 d$rank <- rank(-d$freq,ties.method="min") 问题是缺少第4级。我希望连续列组处理原始数据帧中的许
id freq
1 4
2 3
3 2
4 2
5 1
freq列告诉每个id的频率。问题是:我想要前3个频率。输出应为
id freq
1 4
2 3
3 2
4 2
我使用了以下代码
d$rank <- rank(-d$freq,ties.method="min")
问题是缺少第4级。我希望连续列组处理原始数据帧中的许多重复值。感谢您的帮助
谢谢 假设'freq'按降序排列,我们得到'freq'的
唯一的
元素,用头
选择前3个元素,使用%in%
获得那些元素在'freq'列中的逻辑索引,以及子集
行
subset(df1, freq %in% head(unique(freq),3))
# id freq
#1 1 4
#2 2 3
#3 3 2
#4 4 2
如果我们使用的是
rank
,那么dplyr
中的densite\u-rank
将是一个选项
library(dplyr)
df1 %>%
filter(dense_rank(-freq) < 4)
假设'freq'按降序排列,我们得到'freq'的
唯一的
元素,用头
选择前3个元素,使用%in%
获得'freq'列中那些元素的逻辑索引,以及子集
行
subset(df1, freq %in% head(unique(freq),3))
# id freq
#1 1 4
#2 2 3
#3 3 2
#4 4 2
如果我们使用的是
rank
,那么dplyr
中的densite\u-rank
将是一个选项
library(dplyr)
df1 %>%
filter(dense_rank(-freq) < 4)
下面是另一种基本的R方法:
df[cumsum(!duplicated(df$freq))<4,]
# id freq
#1 1 4
#2 2 3
#3 3 2
#4 4 2
下面是另一种基本的R方法:
df[cumsum(!duplicated(df$freq))<4,]
# id freq
#1 1 4
#2 2 3
#3 3 2
#4 4 2