我有一个数据框,其中每一行代表一个空间单元。nbid* 变量指示哪个单元是邻居。我想将邻居的虚拟变量放入主数据框中。(它可以不是空间单位,而是数据框架内的任何类型的关系 - 业务合作伙伴、亲戚、相关基因等。)一些简化的数据如下所示:
seed(999)
df_base <- data.frame(id = seq(1:100),
dum= sample(c(rep(0,50), rep(1,50)),100),
nbid_1=sample(1:100,100),
nbid_2=sample(1:100,100),
nbid_3=sample(1:100,100)) %>%
mutate(nbid_1 = replace(nbid_1, sample(row_number(), size = ceiling(0.1 * n()), replace = FALSE), NA),
nbid_2 = replace(nbid_2, sample(row_number(), size = ceiling(0.3 * n()), replace = FALSE), NA),
nbid_3 = replace(nbid_3, sample(row_number(), size = ceiling(0.7 * n()), replace = FALSE), NA))
Run Code Online (Sandbox Code Playgroud)
(在这些简化数据中以及除了真实数据之外,邻居 1,2 和 3 可以相同,但这对于问题来说并不重要。)
我的方法是复制然后连接数据,如下所示:
df1 <- df_base
df2 <- df_base %>%
select(-c(nbid_1,nbid_2,nbid_3)) %>%
rename(nbdum=dum)
df <- left_join(df1,df2,by=c("nbid_1"="id")) %>%
rename(nbdum1=nbdum) %>% …Run Code Online (Sandbox Code Playgroud)