如何用tidyverse为分组数据框添加同组一致新列并删除指定行
解决方案
可以用tidyverse中的dplyr包完成需求,完整代码如下:
library(tidyverse) df <- data.frame(ID = c(rep(1, 3), rep(2, 3)), F = factor(c("A","B","X","C","D","X")), V = c(30, 32, 25, 31, 37, 24) ) df_result <- df %>% group_by(ID) %>% mutate(New = V[F == "X"]) %>% filter(F != "X") %>% ungroup() print(df_result)
代码说明
group_by(ID):按ID分组,确保后续操作在每个独立的ID组内执行mutate(New = V[F == "X"]):在每个分组中,提取F == "X"行对应的V值,由于每组仅存在一行F=="X",该值会自动填充到当前组所有行的New列filter(F != "X"):过滤掉所有F为X的行,完成删除需求ungroup():取消分组状态,避免后续数据操作受到分组约束(可根据实际需求选择是否保留)
运行后输出结果:
# A tibble: 4 × 4 ID F V New <dbl> <fct> <dbl> <dbl> 1 1 A 30 25 2 1 B 32 25 3 2 C 31 24 4 2 D 37 24
内容的提问来源于stack exchange,提问作者yeshead
相关产品推荐
相关产品推荐

