You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:为新增行添加source标识及整合至dplyr流程的方法

问题解答

  1. 你的判断逻辑是正确的
    原始数据中所有行的source值都是"ORIGINAL",使用complete补全缺失年份的行时,新增行的source会被自动设为NA。因此通过is.na(source)判断来标记新增行(设为"MISSING")、保留原始行的"ORIGINAL"标签,这个逻辑完全没问题。

  2. 整合到dplyr链式代码的方法
    直接在现有链式操作的末尾添加一个mutate步骤即可,不用单独提取数据框修改,更符合tidyverse的风格:

library(dplyr)
library(tidyr)

final = my_data %>% 
  group_by(name) %>% 
  complete(year = first(year): last(year)) %>% 
  mutate(age = ifelse(is.na(age), first(age) + row_number() - 1, age)) %>% 
  fill(c(gender, country_of_birth), .direction = "down") %>% 
  # 新增source标记逻辑
  mutate(source = ifelse(is.na(source), "MISSING", source))

如果追求更好的可读性,也可以用case_when替代ifelse:

mutate(source = case_when(
  is.na(source) ~ "MISSING",
  TRUE ~ source
))

测试结果示例:比如John的2012、2013年行,source会被标记为"MISSING",2010、2011、2014年的行保留"ORIGINAL",完全符合需求。

内容的提问来源于stack exchange,提问作者stats_noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:25:41