Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据匹配的2列将行放入列表项中_R_Pattern Matching_Grouping_Igraph - Fatal编程技术网

R 根据匹配的2列将行放入列表项中

R 根据匹配的2列将行放入列表项中,r,pattern-matching,grouping,igraph,R,Pattern Matching,Grouping,Igraph,我需要将我的数据帧放入列表的项目中,以便根据2列ID和ID2_值,每个潜在的人都在一个“bucket”中。然后我将手动执行用户验证以确认是否是同一个人 具有相同ID2_值的多行可能是同一个人-它们需要放在一起。 具有相同ID的多行肯定是同一个人 fname_c1 ID ID2 ID2_value by bm bd <fct> <fct> <fct> <fct> <

我需要将我的数据帧放入列表的项目中,以便根据2列ID和ID2_值,每个潜在的人都在一个“bucket”中。然后我将手动执行用户验证以确认是否是同一个人

具有相同ID2_值的多行可能是同一个人-它们需要放在一起。 具有相同ID的多行肯定是同一个人

fname_c1   ID         ID2    ID2_value   by    bm    bd   
  <fct>   <fct>      <fct>    <fct>     <int> <int> <int> 
1 STEFAN   100       MEDICAL#1  60        1957     9     2    
2 HANS     205       MEDICAL#1  60        1957     6     7    
3 PODRICK  104       MEDICAL#2  5003      1933     6     7   
4 BOB      600       MEDICAL#2  2005      1960     9     2    
5 PODRICK  104       MEDICAL#1  89        1933     9     2   
6 STEFAN   100       MEDICAL#2  1001      1957     6     1  
7 GARY     104       MEDICAL#4  AAB       1933     6     1    
8 GARY     110       MEDICAL#4  AAB       1933     6     1  
fname\u c1 ID ID2 ID2\u bm bd的值
1 STEFAN 100 MEDICAL#1 60 1957 9 2
2 HANS 205 MEDICAL#1 60 1957 6 7
3 PODRICK 104医疗#2 5003 1933 6 7
4 BOB 600医疗#2 2005 1960 9 2
5 PODRICK 104医疗#1 89 1933 9 2
6 STEFAN 100医疗公司#2 1001 1957 6 1
7 GARY 104 MEDICAL#4 AAB 1933 6 1
8 GARY 110 MEDICAL#4 AAB 1933 6 1
根据以上数据,应该放在一起的行是

fname_c1   ID         ID2    ID2_value   by    bm    bd 
  <fct>   <fct>      <fct>    <fct>     <int> <int> <int>  
1 STEFAN   100       MEDICAL#1  60        1957     9     2   
2 HANS     205       MEDICAL#1  60        1957     6     7   
3 STEFAN   100       MEDICAL#2  1001      1957     6     1   

fname_c1   ID         ID2    ID2_value   by    bm    bd   
4 BOB      600       MEDICAL#2  2005      1960     9     2   

fname_c1   ID         ID2    ID2_value   by    bm    bd   
5 PODRICK  104       MEDICAL#1  89        1933     9     2  
6 PODRICK  104       MEDICAL#2  5003      1933     6     7  
7 GARY     104       MEDICAL#4  AAB       1933     6     1  
8 GARY     110       MEDICAL#4  AAB       1933     6     1   
fname\u c1 ID ID2 ID2\u bm bd的值
1 STEFAN 100 MEDICAL#1 60 1957 9 2
2 HANS 205 MEDICAL#1 60 1957 6 7
3 STEFAN 100医疗公司#2 1001 1957 6 1
fname_c1 ID ID2 ID2_bm bd的值
4 BOB 600医疗#2 2005 1960 9 2
fname_c1 ID ID2 ID2_bm bd的值
5 PODRICK 104医疗#1 89 1933 9 2
6 PODRICK 104医疗#2 5003 1933 6 7
7 GARY 104 MEDICAL#4 AAB 1933 6 1
8 GARY 110 MEDICAL#4 AAB 1933 6 1
我很难思考如何进行双重匹配

可复制代码
dat这是一个最好的图论问题。将原始数据视为一个图形,其中相邻部分由同一行中的ID和ID2_值表示。您想要的输出是每个连接子图中的节点。我现在没有时间回答,但是igraph的
igraph
软件包中有一些函数可以使这个问题变得非常简单。将原始数据视为一个图形,其中相邻部分由同一行中的ID和ID2_值表示。您想要的输出是每个连接子图中的节点。我现在没有时间回答,但是igraph的
igraph
软件包有一些功能可以让这个问题变得非常简单
dat <- structure(list(fname_c1 = structure(c(5L, 3L, 4L, 1L, 4L, 5L, 2L, 2L), 
                                           .Label = c("BOB", "GARY", "HANS", "PODRICK", "STEFAN"), 
                                           class = "factor"), 
                      ID = structure(c(1L, 4L, 2L, 5L, 2L, 1L, 2L, 3L), 
                                     .Label = c("100", "104", "110", "205", "600"), 
                                     class = "factor"), 
                      ID2 = structure(c(1L, 1L, 2L, 2L, 1L, 2L, 3L, 3L), 
                                      .Label = c("MEDICAL#1", "MEDICAL#2", "MEDICAL#4"), 
                                      class = "factor"), 
                      ID2_value = structure(c(4L, 4L, 3L, 2L, 5L, 1L, 6L, 6L), 
                                            .Label = c("1001", "2005", "5003", "60", "89", "AAB"), 
                                            class = "factor"), 
                      by = c(1957L, 1957L, 1933L, 1960L, 1933L, 1957L, 1933L, 1933L), 
                      bm = c(9L, 6L, 6L, 9L, 9L, 6L, 6L, 6L), 
                      bd = c(2L, 7L, 7L, 2L, 2L, 1L, 1L, 
                             "data.frame")
                      )
                 )

dat <- data.frame(dat)
library(tidyverse)
batches_all <- dat %>% 
  group_split(fname_c1, ID2_value)