我有一个包含两列的数据框:
npm run both
我想删除VAR2的重复值。每行获得
VAR1. VAR2.
A. 102 million; 102 million
B. 0.1 million; 2 million; 0.1 million; 2 million
我该怎么办?
感谢您的建议。
答案 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
,我们可以使用tidyr
将separate_rows
放入不同的行,然后每组仅VAR2
个paste
条目。
unique