我正在对一些数据进行分组,比如实体数据.我已经找到了基于一些实体属性的组,如下所示:

df <- data.frame(uniq_index.x = c(1426, 1426, 1426, 1426, 7796, 7796, 7796, 7796, 
                                  7159, 7159, 7159, 7159, 7857, 7857, 7857, 7857,
                                  7158, 7158, 7158, 7158, 5440, 9861, 1641, 8685,
                                  1644, 7525, 6030, 5672), 
                 uniq_index.y = c(7796, 7159, 7857, 7158, 1426, 7159, 7857, 7158,
                                  1426, 7796, 7857, 7158, 1426, 7796, 7159, 7158,
                                  1426, 7796, 7159, 7857, 9861, 5440, 8685, 1641,
                                  7525, 1644, 5673, 6030)
                 )

# grouping
a <- df %>% 
  group_by(uniq_index.x) %>% 
  group_split

从以上数据来看,"1426"、"7796"、"7159"、"7877"、"7158"应该是同一组;5672、5673、6030应该是另一组.我可以用group_bygroup_split来获得群体.

但是,如果有重复的组,我使用以下代码获取唯一的组:

# initial an empty dataframe
b <- data.frame(V1 = character())
# loop through a (which is obtained from group_split)
for (i in 1:length(a)) {
  x <- a[[i]][,1]
  y <- a[[i]][,2]
  x <- x %>% 
    mutate(uniq_index = uniq_index.x) %>% 
    select(uniq_index)
  y <- y %>% 
    mutate(uniq_index = uniq_index.y) %>%
    select(uniq_index)
  z <- unique(x) %>% 
    rbind(y) %>% 
    arrange(uniq_index)
  b <- b %>% 
    rbind(paste(z))
}
  
# unique groups
b <- b %>% 
  unique() %>% 
  mutate(
    uniq_agency_id = 100000 + 1:nrow(unique(b))
  )

然后,我注意到了这个问题:

enter image description here

与样本数据相似,(6030,5672)和(5673,6030)是两个独立的组.这两个群体应该是一个大群体.

我正在努力想一个逻辑来获得组合独特的群体.

推荐答案

这个问题的解决方案在这个网站上无处不在.以下是一种使用igraph的方法:

igraph::components(igraph::graph_from_data_frame(df))$membership
1426 7796 7159 7857 7158 5440 9861 1641 8685 1644 7525 6030 5672 5673 
   1    1    1    1    1    2    2    3    3    4    4    5    5    5 

R相关问答推荐

基于R中的GPS点用方向箭头替换点

从gtsummary包中使用tBL_strata()和tBL_summary()时删除变量标签

terra nearest()仅为所有`to_id`列返回NA

使用gggrassure减少地块之间的空间

如何将dygraph调用到R Markdown作为一个shiny 的react 对象的参数?

如何使用ggplot对堆叠条形图进行嵌套排序?

如何在分组条形图中移动相关列?

如何通过判断数据框的一列来压缩另一列?

用约翰逊分布进行均值比较

从服务器在Shiny中一起渲染图标和文本

您是否可以使用facet_rap设置一个较低的限制来对ggmap上的比例中断进行zoom ?

计算直线上点到参考点的总距离

根据另一列中的值和条件查找新列的值

使用不同的定性属性定制主成分分析中点的 colored颜色 和形状

如何删除R中除数字元素以外的所有元素

如何使用包metaviz更改标签的小数位数?

使用LAG和dplyr执行计算,以便按行和按组迭代

以R表示的NaN值的IS.NA状态

在分面的ggplot2条形图中对条形图进行排序,并省略每组未使用的系数级别

对数据帧中的列进行子集设置以通过迭代创建新的数据帧