小编kem*_*uan的帖子

连接多对一:结合相关特征

我有一个数据框,其中每一行代表一个空间单元。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)

r data-manipulation

5
推荐指数
1
解决办法
118
查看次数

标签 统计

data-manipulation ×1

r ×1