补全面板数据缺失行:扩展县行政长官年度任职记录
扩展县行政长官年度面板数据框
你需要把仅记录就职年份的县行政长官数据,扩展为2000-2004年每个县每年对应的长官信息,填补任期内的空缺年份。以下是具体实现方法:
原始数据
df <- data.frame( year = c(2000, 2001, 2003, 2000, 2002, 2004), executive.name = c("Johnson", "Smith", "Alleghany", "Roberts", "Clarke", "Tollson"), party = c("PartyRed", "PartyYellow", "PartyGreen", "PartyYellow", "PartyOrange", "PartyRed"), district = rep(c(1001, 1002), each = 3) )
目标数据
df.neat <- data.frame( year = c(2000, 2001, 2002, 2003, 2004, 2000, 2001, 2002, 2003, 2004), executive.name = c("Johnson", "Smith", "Smith", "Alleghany", "Alleghany", "Roberts", "Roberts", "Clarke", "Clarke", "Tollson"), party = c("PartyRed", "PartyYellow", "PartyYellow", "PartyGreen", "PartyGreen", "PartyYellow", "PartyYellow", "PartyOrange", "PartyOrange", "PartyRed"), district = rep(c(1001, 1002), each = 5) )
解决方案(使用tidyverse工具)
通过生成完整年份序列+向下填充任期信息的方式实现:
library(tidyverse) df_expanded <- df %>% # 按县分组 group_by(district) %>% # 生成2000-2004年的完整年份序列 complete(year = 2000:2004) %>% # 向下填充行政长官和党派信息(任期内沿用前一任信息直到新长官就职) fill(executive.name, party, .direction = "down") %>% # 取消分组 ungroup() %>% # 按县和年份排序,匹配目标数据顺序 arrange(district, year)
验证结果
运行代码后,df_expanded的结构和内容与df.neat完全一致,可通过all.equal(df_expanded, df.neat)验证(返回TRUE即匹配成功)。
内容的提问来源于stack exchange,提问作者YouLocalRUser
相关产品推荐
相关产品推荐

