我想列出一个因子或整数每个级别在数据框中的前n个条目。这是我的代码:
https://stackoverflow.com/questions/44230452/how-to-use-material-dropdown-select-in-angular-dart
https://dart-lang.github.io/angular_components/#/material_dropdown_select
这可以完成工作,但是我不想为每个级别/整数都明确地有一个head语句。谢谢。
答案 0 :(得分:2)
在基数R中,有一种称为tapply
的分组方法:
with(x.df, stack(tapply(prob, index, head, 3)))
# values ind
#1 0.9045300 1
#2 0.7651376 1
#3 0.3631891 1
#4 0.9471318 2
#5 0.9206743 2
#6 0.7675069 2
#7 0.9866379 3
#8 0.9149754 3
#9 0.7862320 3
还有by
的{{1}}函数:
data.frame
产生相同的结果
答案 1 :(得分:1)
假设您的数据框以您想要的方式排序,那么您可以执行以下操作:
library(dplyr)
x.df %>%
group_by(index) %>% # for each index
slice(1:3) %>% # get top 3 rows
ungroup() # forget the grouping
# # A tibble: 9 x 2
# index prob
# <dbl> <dbl>
# 1 1 0.943
# 2 1 0.461
# 3 1 0.251
# 4 2 0.739
# 5 2 0.697
# 6 2 0.695
# 7 3 0.968
# 8 3 0.915
# 9 3 0.635
答案 2 :(得分:1)
假设它是无序的
df = pd.DataFrame([['x','x','x','y','y','y'],['a','a','b','b','c','c'],
[0,0,3,4,5,6],[1,1,1,1,1,1],[0,0,4,6,2,8]],
).transpose()
df.columns = ['col1','col2','col3','col4','col5']
weighted_average = lambda x: np.average(x, weights=df.loc[x.index, 'col3'])
averages = df.groupby(['col1','col2']).agg({'col3':'sum',
'col4':'sum',
'col5': weighted_average})
答案 3 :(得分:1)
使用data.table
软件包的便捷解决方案-
> setDT(x.df)[,head(.SD,3),by=index]
输出-
index prob
1: 1 0.7863076
2: 1 0.7103228
3: 1 0.5657803
4: 2 0.9939695
5: 2 0.7517839
6: 2 0.7348664
7: 3 0.9260537
8: 3 0.5889305
9: 3 0.5557626
注意-如果未订购您的prob
,请使用此-
> setDT(x.df)[order(-prob),head(.SD,3),by=index]