如何删除R中一行中值的第二个实例



我的数据看起来像下面的数据。我想在第二次看到值时删除。值被定义为在垂直条之间(例如"|"(。

row1 <- "A|C|A|B|B|C"
row2 <- "C|C|B|A|A|B"
df <- rbind(row1,row2)

我的目标是第一行是A|C|B,第二行是C|B|A。假设我实际上有10个字母,而不是3个。所有值在行中仅出现两次。我甚至不知道如何从这个问题开始。。。

  1. 这是一个字符串操作,而不是框架操作,所以dplyr在这个钉子上用错了锤子。

  2. 你把它作为一个字符串,反之亦然,把它分解成单个值,这有什么原因吗?也许现在不重要。。。

vec <- c("A|C|A|B|B|C", "C|C|B|A|A|B")
strsplit(vec, "\|")
# [[1]]
# [1] "A" "C" "A" "B" "B" "C"
# [[2]]
# [1] "C" "C" "B" "A" "A" "B"
sapply(strsplit(vec, "\|"), function(v) paste(unique(v), collapse = "|"))
# [1] "A|C|B" "C|B|A"

相关内容

最新更新