使用unique(data.table)或distinct(dplyr)和部分gsub删除行

gmanlearnscoding

我有一个数据集,可以说DT1。DT1有2列,城市和地方。我将DT1与另一个数据集(DT2)匹配以填充缺少的City值。但正如您所看到的,有些地方在不同的城市,名字相同。我要删除此地方,并将其余地方与DT2匹配。这是我的DT1。

DT1 <- data.table::data.table(city = c("XXX", "XXX", "YYY","ZZZ"),
 places= c("apple","orange","apple","pineapple"))

#> City     BirthPlace
#> XXX      apple
#> XXX      orange
#> YYY      apple
#> ZZZ      pineapple

当我使用唯一或不相同时,它保留1个苹果,这在DT2中引起问题,因为即使我的苹果位置属于YYY,它也会将XXX粘贴到DT2中的city列中。

这是DT2的一个例子

DT2 <- data.table::data.table(zipcode = c("00001","00002","00003","00004"),
                  birthplace= c("apple","orange","pineapple","grapes")

#> ZipCode  BirthPlace
#> 00001      apple
#> 00002      orange
#> 00003      pineapple
#> 00004      grapes

如您所见,我在DT2中有一个苹果商店。我不知道它的位置,是在城市XXX还是在YYY。这就是为什么我需要删除DT1中的所有苹果行,但是唯一或独特功能使我无法看到它们始终保持第一行的原因。

这是我想要实现的

DT3 <- data.table::data.table(city = c("XXX","ZZZ"),
                  birthplace= c("orange","grapes"),
                  zipcode = c("00002","00004")
#>  City BirthPlace ZipCode
#>   XXX    orange  00002
#>   ZZZ    grapes  00004

除此之外,某些出生地的值还包括标点符号,例如apple st。我试图将其分开,让苹果一个人呆着,gsub("^(st.)*$","",dt2$birthplace)但对这个家伙没有任何建议吗?

阿克伦

一个选项 data.table

library(data.table)
DT1[, if(.N == 1) .SD, places][DT2, on = .(places = birthplace), nomatch = 0]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章