我有一个超过20000行(data3)的数据框,其中一个列名为“collector”。在本专栏中,我有一些单词,例如:“Ruiz Galvis Marta”。我需要将每一行与我的数据框中的所有其他行进行比较,并删除df $ collector列中的一个或多个单词与所有其他行中同一列中的单词匹配的那些行,并使用该值在“sample”列和“number”列中。那就是:
INPUT:
Collector Times sample number
Ruiz Galvis Marta 9 SP.1 one
Smith et al Marta 8 SP.2 two
Ruiz Andres Allan 4 SP.1 one
EXPECTED OUTPUT
Collector Times sample number
Smith et al Marta 8 SP.2 two
感谢您的帮助!
答案 0 :(得分:2)
可能会慢下来但是
dd <- data.frame(Collector = c('Ruiz Galvis Marta', 'Smith et al Marta', 'Ruiz Andres Allan'),
stringsAsFactors = FALSE)
## create a matrix with the words by column
tt <- strsplit(dd$Collector, '\\s+')
mm <- do.call('rbind', lapply(tt, `length<-`, max(lengths(tt))))
## remove all duplicates
dd[rowSums(apply(mm, 2, function(x)
duplicated(x) | duplicated(x, fromLast = TRUE))) == 0, ]
# [1] "Smith et al Marta"