删除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万