我正在继续使用一些动物收容所的数据进行数据清理练习。我的目标是将品种类别的数量缩小。
我将每个品种类别作为部分匹配模式与 outgoing$Single.Breed 数据框列进行匹配。因此,有些品种只会是 Chihuahua,但也可能是 Long Hair Chihuahua。(这就是我使用 grepl 的原因。)因此,任何包含品种类别的内容都将在另一列中由该类别表示。此外,我还需要添加猫的品种类别……这让代码变得更加凌乱。
下面的代码是我的“解决方案”,但它相当笨重。是否有更好、更流畅和/或更高效的方法来完成这项任务?
我将每个品种类别作为部分匹配模式与 outgoing$Single.Breed 数据框列进行匹配。因此,有些品种只会是 Chihuahua,但也可能是 Long Hair Chihuahua。(这就是我使用 grepl 的原因。)因此,任何包含品种类别的内容都将在另一列中由该类别表示。此外,我还需要添加猫的品种类别……这让代码变得更加凌乱。
下面的代码是我的“解决方案”,但它相当笨重。是否有更好、更流畅和/或更高效的方法来完成这项任务?
BreedCategories <- ifelse(outgoing$New.Type == "Dog",
ifelse(grepl("Chihuahua",outgoing$Single.Breed, ignore.case = TRUE), "Chihuahua",
ifelse(grepl("Pit Bull",outgoing$Single.Breed, ignore.case = TRUE), "Pit Bull",
ifelse(grepl("Terrier",outgoing$Single.Breed, ignore.case = TRUE), "Terrier",
ifelse(grepl("Shepherd",outgoing$Single.Breed, ignore.case = TRUE), "Shepherd",
ifelse(grepl("Poodle",outgoing$Single.Breed, ignore.case = TRUE), "Poodle",
ifelse(grepl("Labrador|Retriever",outgoing$Single.Breed, ignore.case = TRUE),"Labrador",
"Other")))))),"Cat")
dplyr::case_when
。 - alistaireifelse
,再加上可以重现的示例以及您所需的输出会更理想。 - Nate