如何在R语言中筛选至Description列最后一个'Total'值为止的数据?
筛选数据至最后一个
Total行 问题描述
现有如下R数据框:
df<-data.frame( Description=c("15","11","12","NA","Total","NA","9","18","NA","Total","9","18","NA","11"), Value=c(158,196,NA,156,140,693,854,NA,904,925,156,140,693,123)) df
需求是:仅保留Description列中最后一个值为Total的行为止的所有数据。
尝试了以下命令但未生效(该命令仅筛选出Description为Total的行,不符合需求):
df %>% filter(Description=='Total')
解决方案
你需要先定位最后一个Total所在的行号,再筛选该行及之前的所有数据,以下是两种可行实现方式:
方式1:使用dplyr包
library(dplyr) # 获取最后一个Total的行索引 last_total_row <- which(df$Description == "Total") %>% tail(1) # 筛选目标数据 df_filtered <- df[1:last_total_row, ] df_filtered
方式2:纯Base R实现(无需额外包)
# 定位最后一个Total的位置 last_pos <- max(which(df$Description == "Total")) # 截取目标数据 df_filtered <- df[1:last_pos, ] df_filtered
执行上述代码后,即可得到从第一行到最后一个Total行的所有数据,满足需求。
内容的提问来源于stack exchange,提问作者silent_hunter
相关产品推荐
相关产品推荐

