R语言如何按id分组筛选首行满足指定条件的整组数据
方法1:使用dplyr包实现(最简洁)
先加载dplyr包,按id分组后判断组内首行是否符合条件即可:
library(dplyr) result <- dataframe %>% group_by(id) %>% filter(first(time) == 1 & first(treatment) == 0) %>% ungroup()
运行后得到的result和预期输出完全一致,id=2(首行treatment为1)、id=4(首行treatment为NA)会被自动排除。
方法2:base R实现(无需加载第三方包)
# 按id拆分数据集 split_df <- split(dataframe, dataframe$id) # 筛选首行符合要求的id分组 keep_group <- sapply(split_df, function(x) { first_row <- x[1,] first_row$time == 1 & !is.na(first_row$treatment) & first_row$treatment == 0 }) # 合并符合条件的分组得到结果 result <- do.call(rbind, split_df[keep_group]) rownames(result) <- NULL
打印result即可验证输出和需求一致。
内容的提问来源于stack exchange,提问作者fan lin
相关产品推荐
相关产品推荐

