我有一個R看起來像這樣的資料框:
| 屬 | 物種 |
|---|---|
| 尋常桿菌 | 萬能桿菌屬 |
| 不適用 | 平面霉菌 |
| 大食蟻獸 | Geothrix sp。 |
如果屬中的值不包含在物種中,我想從列中洗掉值。我想要這個:
| 屬 | 物種 |
|---|---|
| 尋常桿菌 | 萬能桿菌屬 |
| 不適用 | 平面霉菌 |
| 大食蟻獸 | 不適用 |
transform(.,Species= ifelse(Genus %in% Species, Species, NA)) 不起作用。
uj5u.com熱心網友回復:
df |>
mutate(species = case_when(mapply(grepl, sprintf("^%s", genus), species) ~ species,
is.na(genus) ~ species,
TRUE ~ NA_character_))
#> # A tibble: 3 × 2
#> genus species
#> <chr> <chr>
#> 1 Vulgatibacter Vulgatibacter sp.
#> 2 NA Planctomyces
#> 3 Holophaga NA
uj5u.com熱心網友回復:
不確定我是否理解邏輯,但這適用于您的示例資料:
df <- structure(list(genus = c("Vulgatibacter",
NA, "Holophaga"),
species = c("Vulgatibacter sp.",
"Planctomyces",
"Geothrix sp.")),
class = c("tbl_df", "tbl", "data.frame"),
row.names = c(NA, -3L))
transform(df, species = ifelse(is.na(genus), species,
ifelse(sub(" sp.", "", species) == genus, species, NA)))
#> genus species
#> 1 Vulgatibacter Vulgatibacter sp.
#> 2 <NA> Planctomyces
#> 3 Holophaga <NA>
由reprex 包于 2022-03-23 創建(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447956.html
下一篇:如何統一單位?
