Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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中的重复字符,同时保留数据帧结构_R_Neural Network_Duplicates - Fatal编程技术网

合并R中的重复字符,同时保留数据帧结构

合并R中的重复字符,同时保留数据帧结构,r,neural-network,duplicates,R,Neural Network,Duplicates,我有一个神经网络的玩具边缘专家,看起来像这样: df<-c("Group1", "Group1", "Group2", "Group1, Group3", "Group1, Group3", "Group3", "Group3, Group4", "Group3, Group4") V1 1 Group1 2 Group1 3 Group2 4 Group1, Group3 5 Group1, Group3 6 Group3 7 Group3, Gr

我有一个神经网络的玩具边缘专家,看起来像这样:

df<-c("Group1", "Group1", "Group2", "Group1, Group3", "Group1, Group3", 
"Group3", "Group3, Group4", "Group3, Group4")

    V1
1   Group1
2   Group1
3   Group2
4   Group1, Group3
5   Group1, Group3
6   Group3
7   Group3, Group4
8   Group3, Group4
所有的重复都是两个的倍数,所以只有两个值的奇数重复没有任何问题,等等

编辑

作为将来的参考,如果edgelist有这样的非顺序副本,我该怎么办:

df<-c("Group1", "Group1, Group3", "Group2", "Group1, Group3", "Group3", 
      "Group3, Group4", "Group3", "Group3, Group4")
    V1
1   Group1
2   Group1, Group3
3   Group2
4   Group1, Group3
5   Group3
6   Group3, Group4
7   Group3
8   Group3, Group4

df删除重复项,然后在逗号处拆分

unlist(strsplit(df[!(ave(seq_along(df), df, FUN = seq_along) == 2 & grepl(",", df))], ", "))
#[1] "Group1" "Group1" "Group2" "Group1" "Group3" "Group3" "Group3" "Group4"
df
如果重复项可能不在一起,则可能需要首先对其进行排序

下面是另一种使用
mapply
的方法,无论
df

df2
#>1组1组1
#>2组1,组3组1
#>3组2组2
#>4组1,组3组3
#>5组3组3
#>6组3,组4组3
#>7组3组3
#>8组3,组4组4

使用tidyverse函数

df\u t%
dplyr::分组依据(V1)%>%
dplyr::筛选器(!(行号()==2&str\u检测(V1,“,”)))%%>%
dplyr::ungroup()
tidyr::独立的_行(V1)
#一个tible:8 x 1
V1
*  
1组1
第2组1
第3组2
第4组1
5组3
第6组3
第7组3
8组4

另一个带有
rowid的选项

library(data.table)
library(stringr)
data.table(V1 = df)[!(rowid(V1) == 2 & str_detect(V1, ",")),
          .(V1 = unlist(strsplit(V1, ", ")))]
#   V1
#1: Group1
#2: Group1
#3: Group2
#4: Group1
#5: Group3
#6: Group3
#7: Group3
#8: Group4

或者使用
tidyverse

library(dplyr)
library(tidyr)
tibble(V1 = df) %>%
   filter(!duplicated(case_when(str_detect(V1, ',') ~ V1,
       TRUE ~ make.unique(V1)))) %>%
   separate_rows(V1)
library(dplyr)
library(tidyr)
tibble(V1 = df) %>%
   filter(!duplicated(case_when(str_detect(V1, ',') ~ V1,
       TRUE ~ make.unique(V1)))) %>%
   separate_rows(V1)