R语言如何对数据框列表按Year列的最大值进行切片筛选
方法1:基础R实现(无需额外依赖)
直接使用内置的lapply遍历列表,逐一对每个dataframe做筛选即可:
result <- lapply(l, function(df) { # 筛选Year等于最大值的行,存在多个最大值行时会全部返回 df[df$Year == max(df$Year), ] }) # 查看结果 print(result)
如果只需要保留第一个匹配最大Year的行,调整写法为:
result <- lapply(l, function(df) { df[df$Year == max(df$Year), ][1, ] })
方法2:tidyverse 生态实现
如果你习惯使用dplyr、purrr的工具链,可使用以下写法:
# 先加载依赖包 library(dplyr) library(purrr) result <- l %>% map(~ filter(.x, Year == max(Year)))
如果需要将所有切片结果合并为一个完整的dataframe,把map替换为map_dfr即可自动完成行拼接:
merged_result <- l %>% map_dfr(~ filter(.x, Year == max(Year)))
内容的提问来源于stack exchange,提问作者ph_9933
相关产品推荐
相关产品推荐

