我在R中有一个以下数据帧
Serivce Codes
ABS RT
ABS RT
ABS TY
ABS DR
ABS DR
ABS DR
ABS DR
DEF RT
DEF RT
DEF TY
DEF DR
DEF DR
DEF DR
DEF DR
DEF TY
DEF SE
DEF SE
Run Code Online (Sandbox Code Playgroud)
我想要的是服务明智的代码计数降序
Serivce Codes Count
ABS DR 4
ABS RT 2
ABS TY 1
DEF DR 4
DEF RT 2
DEF TY 2
Run Code Online (Sandbox Code Playgroud)
我正在关注r
df%>%
group_by(Service,Codes) %>%
summarise(Count = n()) %>%
top_n(n=3,wt = Count) %>%
arrange(desc(Count)) %>%
as.data.frame()
Run Code Online (Sandbox Code Playgroud)
但是,它并没有给我什么意图.
我们可以试试 count/arrange/slice
df1 %>%
count(Service, Codes) %>%
arrange(desc(n)) %>%
group_by(Service) %>%
slice(seq_len(3))
# A tibble: 6 x 3
# Groups: Service [2]
# Service Codes n
# <chr> <chr> <int>
#1 ABS DR 4
#2 ABS RT 2
#3 ABS TY 1
#4 DEF DR 4
#5 DEF RT 2
#6 DEF SE 2
Run Code Online (Sandbox Code Playgroud)
在OP的代码中,我们也需要arrange"服务".正如@Marius在评论中所说,top_n如果存在联系,将包括更多行数.一种选择是使用"服务"和slice(如上所示)进行第二次分组,或者在分组后,我们可以filter
df1 %>%
group_by(Service,Codes) %>%
summarise(Count = n()) %>%
top_n(n=3,wt = Count) %>%
arrange(Service, desc(Count)) %>%
group_by(Service) %>%
filter(row_number() <=3)
Run Code Online (Sandbox Code Playgroud)