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

时间:2019-05-27 10:52:16

标签: r duplicates

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

npm run both

我想删除VAR2的重复值。每行获得

 VAR1.                     VAR2.

  A.              102 million; 102 million

  B.      0.1 million; 2 million; 0.1 million; 2 million

我该怎么办?

感谢您的建议。

2 个答案:

答案 0 :(得分:1)

这是一个使用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"

此处使用的一般策略是将一个数字与一个可选的十进制成分匹配,然后再跟另一个单词,只要该数字单词在输入字符串的下游至少出现一次。如果确实再次出现,则我们将其替换为空字符串以删除第一项。请注意,由于正向查找会失败,因此不会删除最后出现的一对术语。

答案 1 :(得分:1)

使用基数R,我们可以在";"的{​​{1}}和paste unique条目上拆分字符串

VAR2

使用sapply(strsplit(df$VAR2, ";"), function(x) paste(unique(x), collapse = ";")) #[1] "102 million" "0.1 million;2 million" dplyr,我们可以使用tidyrseparate_rows放入不同的行,然后每组仅VAR2paste条目。

unique