如何保留DataFrame顶部行并筛选基于列n的前10高频行?
两个R语言数据处理需求的实现方案
先确认你提供的示例数据处理后的结构:运行频率统计代码后,df会是按stock、newspaper、status分组后的结果,包含计数列n。下面针对两个需求给出具体实现:
1. 保留DataFrame的顶部行
如果想快速查看或保留DataFrame的前N行,有两种常用方式:
基础R方法:head()函数
直接调用head(),默认返回前6行,也可指定行数:
# 保留前6行(默认行为) top_rows <- head(df) # 保留指定行数,比如前3行 top_rows <- head(df, n = 3)
dplyr方法:slice_head()
如果用tidyverse生态,推荐用slice_head()配合管道操作:
library(dplyr) # 保留前5行 top_rows <- df %>% slice_head(n = 5)
2. 筛选基于列n的前10个高频行
需要先按n降序排列,再取前10行,用dplyr的组合操作最便捷:
library(dplyr) # 按n降序排序,取前10个高频行 top_10_high_freq <- df %>% arrange(desc(n)) %>% slice_head(n = 10)
如果你的dplyr版本较旧,也可以用top_n()函数(不过新版本更推荐上面的写法):
# 旧版写法,取前10个高频行 top_10_high_freq <- df %>% top_n(n = 10, wt = n)
注意:如果有多个行的n值相同且刚好排在第10位,slice_head(n=10)只会取到第10行,而top_n()会包含所有n值等于第10位的行,可根据需求选择。
内容的提问来源于stack exchange,提问作者Erik Brole
相关产品推荐
相关产品推荐

