删除R中每个字符串上的重复值

删除R中每个字符串上的重复值,r,duplicates,R,Duplicates,我有一个包含两列的数据框: VAR1. VAR2. A. 102 million; 102 million B. 0.1 million; 2 million; 0.1 million; 2 million 我想删除VAR2的重复值。对于每行,获取 VAR1. VAR2. A. 102 million B. 0.1 million; 2 mill

我有一个包含两列的数据框:

 VAR1.                     VAR2.

  A.              102 million; 102 million

  B.      0.1 million; 2 million; 0.1 million; 2 million
我想删除VAR2的重复值。对于每行,获取

 VAR1.           VAR2.

  A.          102 million

  B.     0.1 million; 2 million
我该怎么办


谢谢您的建议。

这里有一个使用
sub
的解决方案,似乎很有效:

x <- "0.1 million; 2 million; 0.1 million; 2 million"
gsub("\\b(\\d+(?:\\.\\d+)?) ([^;]+); (?=.*\\b\\1 \\2\\b)", "", x, perl=TRUE)

[1] "0.1 million; 2 million"

x使用基数R,我们可以拆分
“;”
上的字符串和
粘贴
唯一
项,用于
VAR2

sapply(strsplit(df$VAR2, ";"), function(x) paste(unique(x), collapse = ";"))
#[1] "102 million"           "0.1 million;2 million"

使用
dplyr
tidyr
我们可以使用
separate_行
VAR2
放入不同的行中,然后
paste
每个组的唯一
条目

library(dplyr)
library(tidyr)

df %>%
 separate_rows(VAR2, sep = ";") %>%
 group_by(VAR1) %>%
 summarise(VAR2 = paste(unique(VAR2), collapse = ";"))

#  VAR1  VAR2                 
#  <fct> <chr>                
#1 A     102 million          
#2 B     0.1 million;2 million
库(dplyr)
图书馆(tidyr)
df%>%
单独的_行(VAR2,sep=“;”)%>%
分组依据(VAR1)%>%
摘要(VAR2=粘贴(唯一(VAR2),collapse=“;”))
#VAR1 VAR2
#                   
#1.02亿美元
#20亿美元;200万